Tô màu theo điều kiện

Liên hệ QC
Bạn bôi đen vùng tô màu và đặt công thức trong Conditional Formatting: =COUNTIF($I$3:$K$3,E7), Fill màu đỏ là được.
 

File đính kèm

Mình xin lỗi đã khiến bạn không hiểu ý của mình, cái kết quả mong muốn ở bên sheet "đề bài 2" bạn ạ! mình muốn thể hiện màu cả cột cơ
 
Mình xin lỗi đã khiến bạn không hiểu ý của mình, cái kết quả mong muốn ở bên sheet "đề bài 2" bạn ạ! mình muốn thể hiện màu cả cột cơ
Bạn chỉ cần cố định dòng 7 là được, công thức sửa lại là: =COUNTIF($I$3:$K$3,E$7)
 

File đính kèm

mình muốn thể hiện màu cả cột cơ
Tôi chưa hiểu rõ yêu cầu của bạn lắm, bạn muốn tô màu cho toàn bộ cột hay chỉ 1 phần của cột. Trong File đính kèm tôi thấy bạn chỉ tô màu có 8 ô trong cột, ví dụ ở cột E chỉ tô màu từ cột E7 đến E15 thôi.
 
cảm ơn bạn rất nhiều!
 

File đính kèm

Bài này định dạng theo điều kiện là được mà (bài #4), giết gà mà dùng dao mổ bò chi vậy anh?
Biết là có thể dùng condition fomating nhưng mình nghĩ nếu dùng VBA như ngoaithanh thì file sẽ chạy nhanh hơn.(nếu File nhiều dữ liệu)
 
Biết là có thể dùng condition fomating nhưng mình nghĩ nếu dùng VBA như ngoaithanh thì file sẽ chạy nhanh hơn.(nếu File nhiều dữ liệu)
Code bài #7: chạy trên file Excel 2003, lặp 2269 lần, chạy trên Excel 2007 trở lên (save lại thành .xlsx) thì lặp 147,421 lần, nếu hơn 9 dòng thì còn chậm nữa. Bất kỳ thay đổi nào trên sheet cũng mất thời gian chạy code. Và phải bật Marco nữa.
Mình sửa lại 1 chút:
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cll As Range, Tm As Double
If Not Intersect(Target, [I3:K3]) Is Nothing Then
    Tm = Timer()
    [E7:P15].Interior.ColorIndex = 0
    For Each Cll In [E7:P7]
      If Cll = [i3] Or Cll = [j3] Or Cll = [k3] Then
            Cll.Resize(9).Interior.ColorIndex = 3
      End If
    Next Cll
    [I2] = Timer() - Tm
    MsgBox Timer() - Tm
End If
End Sub
 

File đính kèm

Code bài #7: chạy trên file Excel 2003, lặp 2269 lần, chạy trên Excel 2007 trở lên (save lại thành .xlsx) thì lặp 147,421 lần, nếu hơn 9 dòng thì còn chậm nữa. Bất kỳ thay đổi nào trên sheet cũng mất thời gian chạy code. Và phải bật Marco nữa.
Mình sửa lại 1 chút:
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)

Dim Cll As Range, Tm As Double
If Not Intersect(Target, [I3:K3]) Is Nothing Then
    Tm = Timer()
    [E7:P15].Interior.ColorIndex = 0
    For Each Cll In [E7:P7]
      If Cll = [i3] Or Cll = [j3] Or Cll = [k3] Then
            Cll.Resize(9).Interior.ColorIndex = 3
      End If
    Next Cll
    [I2] = Timer() - Tm
    MsgBox Timer() - Tm
End If
End Sub
Bạn thấy chưa ? Mình đã nói là để ta cùng học hỏi mà ! Nhưng code của mình có thể phát triển tiếp về bên phải và thay 3 số ColorIndex = 3 bằng số khác, chẳng hạn 3 và 6 và 8 thử xem .
 
Web KT

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

Back
Top Bottom