У меня есть таблица, содержащая до 100 различных текстовых значений, и я хочу раскрасить их в соответствии с текстом, чтобы вы могли визуально увидеть, какие ячейки имеют одинаковый текст (таблица!В2:DB100).

У меня есть отдельный лист, который перечисляет значения, которые находятся в таблице (динамически) (список!A1:A100).

Возможным решением было бы применить условное форматирование, которое выясняет, есть ли ячейка в таблице!B2:DB100 соответствует списку!A1. Если это так, закрасьте его цветом 1. Затем добавьте еще одно условное форматирование, говоря, если ячейка в таблице!B2:DB100 соответствует списку!А2 тогда цвет с цветом 2. И так далее.

Делать это вручную было бы больно, потому что есть 100 возможных текстовых значений.

Я полагаю, что мог бы сделать это с помощью макроса, который имеет дополнительное преимущество, заключающееся в том, что вы можете применять значения RGB хорошим упорядоченным способом.

Действительно ли макрос - лучший способ сделать это? Будет ли в таблице работать ~ 100 условных форматов? Есть ли более простой способ добиться того же эффекта?

1 ответ1

1

Для чего это стоит, у меня что-то работает достаточно хорошо. Я написал макрос, чтобы применить условное форматирование.

Sub conditional()
'
' conditional Macro

i = 1
station = 1
colorscheme = 1
Do Until Sheets("Data").Cells(i + 3, 3) = ""
    a = "=Data!" + Sheets("Data").Cells(i + 3, 3).Address
    c1 = 255
    c2 = 147 + 17 * station
    Select Case colorscheme
        Case 1 'red
            mycolor = RGB(c1, c2, c2)
        Case 2 'yellow
            mycolor = RGB(c1, c1, c2)
        Case 3 'green
            mycolor = RGB(c2, c1, c2)
        Case 4 'cyan
            mycolor = RGB(c2, c1, c1)
        Case 5 'blue
            mycolor = RGB(c2, c2, c1)
        Case 6 'purple
            mycolor = RGB(c1, c2, c1)
    End Select
    Range("H4:BE48").FormatConditions.Add Type:=xlTextString, String:=a, _
        TextOperator:=xlContains
    With Range("H4:BE48").FormatConditions(Range("H4:BE48").FormatConditions.Count)
        .Interior.Color = mycolor
        .StopIfTrue = True
    End With
    i = i + 1
    station = station + 1
    If station = 5 Then
        station = 1
        colorscheme = colorscheme + 1
    End If
    If colorscheme = 7 Then
        colorscheme = 1
    End If
Loop

End Sub

А вот как это выглядит на примере:

Условное форматирование

Я приветствовал бы любые комментарии, предложения или улучшения.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .