Thay ô màu bằng ký tự (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

ducleminh

Thành viên chính thức
Tham gia
3/10/07
Bài viết
66
Được thích
3
Hiện mình có một file excel có nhiều ô được tô màu Xanh, Đỏ, Vàng.....

Hiện mình có nhu cầu dùng công thức đếm dữ liệu, nên mình muốn thay các ô xanh, đỏ, vàng đó thành các ký tự khác nhau VD:
Xanh chữ A
Đỏ chữ B
Vàng chữ C

(file đính kèm)

Bạn nào biết giúp mình với nhé
 

File đính kèm

Chuyện này có thể fải xài VBA:
Ta biết rằng =Code("A") => 65 & =CHAR(65 + 56) => 'y'
Vậy thì có thể xử với tất cả các màu nền trong các ô rồi còn gì.
 
Hiện mình có một file excel có nhiều ô được tô màu Xanh, Đỏ, Vàng.....

Hiện mình có nhu cầu dùng công thức đếm dữ liệu, nên mình muốn thay các ô xanh, đỏ, vàng đó thành các ký tự khác nhau VD:
Xanh chữ A
Đỏ chữ B
Vàng chữ C

(file đính kèm)

Bạn nào biết giúp mình với nhé
Bạn thử:
PHP:
Sub abc()
    Dim c As Range, Rng As Range
    Dim LR As Long, LC As Long
    LR = Range("A" & Rows.Count).End(xlUp).Row
    LC = Cells(1, Columns.Count).End(xlToLeft).Column
    Set Rng = Range(Cells(2, 3), Cells(LR, LC))
    Application.ScreenUpdating = False
    For Each c In Rng
    If c.Interior.ColorIndex = 3 Then
    c.Value = "B"
    End If
     If c.Interior.ColorIndex = 6 Then
    c.Value = "C"
    End If
      If c.Interior.ColorIndex = 14 Or c.Interior.ColorIndex = 23 Then
    c.Value = "A"
    End If
    Next c
    Application.ScreenUpdating = True
End Sub
 
Bạn thử:
PHP:
Sub abc()
    Dim c As Range, Rng As Range
    Dim LR As Long, LC As Long
    LR = Range("A" & Rows.Count).End(xlUp).Row
    LC = Cells(1, Columns.Count).End(xlToLeft).Column
    Set Rng = Range(Cells(2, 3), Cells(LR, LC))
    Application.ScreenUpdating = False
    For Each c In Rng
    If c.Interior.ColorIndex = 3 Then
    c.Value = "B"
    End If
     If c.Interior.ColorIndex = 6 Then
    c.Value = "C"
    End If
      If c.Interior.ColorIndex = 14 Or c.Interior.ColorIndex = 23 Then
    c.Value = "A"
    End If
    Next c
    Application.ScreenUpdating = True
End Sub
Người ta nói rằng:
Hiện mình có nhu cầu dùng công thức đếm dữ liệu, nên mình muốn thay các ô xanh, đỏ, vàng đó thành các ký tự khác nhau
Tôi đoán người ta muốn thay màu sắc thành ký tự để có thể đếm bằng hàm COUNTIF. Vậy thôi ta viết code đếm màu sắc luôn cho gọn, vì đằng nào cũng viết code, mà code đếm màu sẽ có nhiều ứng dụng hơn so với việc thay màu thành ký tự
-------------------------
Ngoài ra, nếu cố chấp với việc viết code thay màu thành ký tự, ta có thể dùng Find and Replace (thậm chí làm bằng tay cũng xong)
 
Cái này là tác giả "chơi kiểu".
Nếu là tôi thì dùng CF, nhập A thì tô đỏ, B tô vàng, C,D... nhanh hơn tô màu từng ô.
Muốn xem màu thì xem, muốn đếm A,B,C ... thì đếm.
 
Cái này là tác giả "chơi kiểu".
Nếu là tôi thì dùng CF, nhập A thì tô đỏ, B tô vàng, C,D... nhanh hơn tô màu từng ô.
Muốn xem màu thì xem, muốn đếm A,B,C ... thì đếm.
Có thể file đó có sẵn, màu đó có sẵn... mà giờ người ta muốn đếm màu nhưng chưa tìm ra cách
 
Có thể file đó có sẵn, màu đó có sẵn... mà giờ người ta muốn đếm màu nhưng chưa tìm ra cách
Hic bạn này đúng rồi nè, file đó có dữ liệu nhiều năm rồi, các ô tô màu và ghi ký tự khác nhau. Nhưng mình xóa hết ký tự, muốn điền ký tự thống nhất theo màu
Sau đó dùng countif để phân tích theo các ngày trong tuần, các giờ trong ngày ....
Mình không rành dùng code VBA, nên muốn chuyển sang ký tự để thống kê và phân tích bằng countif
Các bạn giúp mình nhé
 
Hic bạn này đúng rồi nè, file đó có dữ liệu nhiều năm rồi, các ô tô màu và ghi ký tự khác nhau. Nhưng mình xóa hết ký tự, muốn điền ký tự thống nhất theo màu
Sau đó dùng countif để phân tích theo các ngày trong tuần, các giờ trong ngày ....
Mình không rành dùng code VBA, nên muốn chuyển sang ký tự để thống kê và phân tích bằng countif
Các bạn giúp mình nhé
Bạn dùng thử code này:
Mã:
Sub clreplte()
Dim i As Long, n As Long, rng As Range, rng1 As Range, arr
Set rng1 = [c2:id16]
ReDim arr(1 To rng1.Rows.Count, 1 To rng1.Columns.Count)
With CreateObject("scripting.dictionary")
    For Each rng In rng1
        n = rng.Interior.Color
        If Not .exists(n) And n <> 16777215 Then
            i = i + 1: .Add n, String(Int((i - 1) / 26) + 1, ChrW$(64 + i))
        End If
        arr(Range(rng1(1), rng).Rows.Count, Range(rng1(1), rng).Columns.Count) = .Item(n)
    Next
End With
[c2].Resize(UBound(arr), UBound(arr, 2)) = arr
End Sub
 
Web KT

Bài viết mới nhất

Back
Top Bottom