Nhờ các bác giúp: e muốn tô màu khác nhau đối với các ô giống nhau về giá trị (2 người xem)

Liên hệ QC

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

Tôi tuân thủ nội quy khi đăng bài

nguyenanhhoa

Thành viên mới
Tham gia
5/11/24
Bài viết
1
Được thích
0


e có 1 bảng giá trị như file đính kèm, e muốn tô màu khác nhau đối với các ô giống nhau về giá trị (vd: các ô có giá trị a thì tô màu vàng, các ô có giá trị b thì tô màu xanh...);
e đã dùng "định dạng có điều kiện" nhưng phải lặp lại nhiều lần thì mới tô màu được hết; mong các bác giúp e xem có cách nào nhanh gon hơn ko ạ.
 

File đính kèm



e có 1 bảng giá trị như file đính kèm, e muốn tô màu khác nhau đối với các ô giống nhau về giá trị (vd: các ô có giá trị a thì tô màu vàng, các ô có giá trị b thì tô màu xanh...);
e đã dùng "định dạng có điều kiện" nhưng phải lặp lại nhiều lần thì mới tô màu được hết; mong các bác giúp e xem có cách nào nhanh gon hơn ko ạ.
1. Đăng sai box
2. Bạn nên sửa các từ viết tắt
 


e có 1 bảng giá trị như file đính kèm, e muốn tô màu khác nhau đối với các ô giống nhau về giá trị (vd: các ô có giá trị a thì tô màu vàng, các ô có giá trị b thì tô màu xanh...);
e đã dùng "định dạng có điều kiện" nhưng phải lặp lại nhiều lần thì mới tô màu được hết; mong các bác giúp e xem có cách nào nhanh gon hơn ko ạ.
Có cách xài VBA, ưng không thì bảo?
Nếu trị trùng không nhiều (như <=49) thì có vẻ dễ đạt mục đích
 


e có 1 bảng giá trị như file đính kèm, e muốn tô màu khác nhau đối với các ô giống nhau về giá trị (vd: các ô có giá trị a thì tô màu vàng, các ô có giá trị b thì tô màu xanh...);
e đã dùng "định dạng có điều kiện" nhưng phải lặp lại nhiều lần thì mới tô màu được hết; mong các bác giúp e xem có cách nào nhanh gon hơn ko ạ.
Bạn dùng thử code sau:
PHP:
Sub RangeColor()
    Dim rng As Range
    Dim rCell As Range
    Dim Dic As Object
    Dim ColorValue As Integer
   
    On Error Resume Next
    Set rng = Application.InputBox(Prompt:="Select a range", Type:=8)
    On Error GoTo 0
    If rng Is Nothing Then Exit Sub

    Set Dic = CreateObject("Scripting.Dictionary")
   
    For Each rCell In rng
        If Not IsEmpty(rCell) Then
            If Not Dic.Exists(rCell.Value) Then
                ColorValue = Dic.Count + 3
                '---> Neu muon mau random, moi lan chay ra mot mau khac nhau
                'ColorValue = Int(50 * Rnd)
                Dic.Add rCell.Value, ColorValue
            End If
            rCell.Interior.ColorIndex = Dic(rCell.Value)
        End If
    Next rCell
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Xin góp 1 cách khác xài phương thức FIND():

PHP:
Sub ToMauTheoTriTrung()
 Dim Rng As Range, Cls As Range, cRg As Range, sRng As Range, WF As Object
 Dim W As Integer:                  Dim MyAdd As String, StrC As String

 Set Rng = Sheet1.UsedRange:        Rng.Interior.ColorIndex = 2
 Set WF = Application.WorksheetFunction
 For Each Cls In Rng
    If Cls.Value <> "" And WF.CountIf(Rng, Cls.Value) > 1 _
        And Cls.Interior.ColorIndex < 9 Then
        Set sRng = Rng.Find(Cls.Value, , xlFormulas, xlWhole)
        If Not sRng Is Nothing Then
            MyAdd = sRng.Address
            Do
                If cRg Is Nothing Then
                    Set cRg = sRng
                Else
                    Set cRg = Union(cRg, sRng)
                End If
                Set sRng = Rng.FindNext(sRng)
            Loop While Not sRng Is Nothing And sRng.Address <> MyAdd
            If cRg.Cells.Count > 2 Then
                cRg.Interior.ColorIndex = 34 + (Asc(Cls.Value) Mod 10)
                Set cRg = Nothing:  W = W + 1
            End If
        End If
    End If
 Next Cls
' MsgBox W  '
End Sub
 
Điển hình của "sáng kiến kém kinh nghiệm thực tế". Thớt chỉ "nghĩ" chứ chưa làm nên không biết.
Code chỉ đúng khi cả hai điều kiện sau đây được thỏa:
1. Hai màu gần giống nhau không thể đi kế nhau. Vì chỉ có mắt siêu mới phan biệt được.
2. Màu nền không thể gần màu chữ, vì sẽ rất khó đọc.

Nhưng vẫn chưa ngon nếu điều kiện sau không thỏa:
- một màu sáng ở giữa 2 vùng màu tối. Người xem ngỡ là một màu sáng ây có gì đăc biệt, khác những chỗ còn lại.
 
Lần chỉnh sửa cuối:
Đầu tiên bạn phải có mã màu và màu đại diện trước đã. Ví dụ:
1730819449054.png

Sau đó mới tô màu:

1730819482885.png

Không giống về dữ liệu nên tớ chỉ đưa ra ý tưởng mình thực hiện thôi, còn code thì chịu.
 
Web KT

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

Back
Top Bottom