У меня есть формула для условного форматирования текста в столбце на основе значения из другой ячейки (не в том же столбце):
=SUM(COUNTIF(A1,"*" & $B$1:$E$1 & "*")) = 1
Более подробное описание можно найти здесь.
У меня возникла проблема при попытке применить эту формулу с помощью макроса, записанного с помощью функции «Записать макрос» в Excel 2010.
Вот как я делаю:
1) Сначала я выбираю весь столбец (щелкая букву столбца вверху).
2) Затем я перехожу к «Условное форматирование»> «Новое правило»> «Использовать формулу для определения ячеек для форматирования», ввожу формулу и выбираю цвет заливки для моего форматирования.
3) Затем я повторяю шаг 2 для трех других условных форматов с разными формулами и разными цветами заливки:
=SUM(COUNTIF(A1,"*" & $B$1:$E$1 & "*")) = 2
=SUM(COUNTIF(A1,"*" & $B$1:$E$1 & "*")) = 3
=SUM(COUNTIF(A1,"*" & $B$1:$E$1 & "*")) = 4
Итак, вот проблема: во время записи макроса я получаю желаемое форматирование, то есть все ячейки в столбце A имеют цветовую кодировку в зависимости от того, сколько значений из ячеек B1, C1, D1 и E1 соответствуют его содержимому.
Однако, когда я пытаюсь запустить ранее записанный макрос в неформатированном столбце, он не работает должным образом, меняет только цвет некоторых ячеек и только один цвет.
Возникает вопрос: как применить несколько условных форматов к одному и тому же столбцу с помощью макроса в Excel 2010?
Ниже приведен полный код макроса для справок:
Sub Macro6()
'
' Macro6 Macro
'
'
Columns("A:A").Select
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=SUM(COUNTIF(A1,""*"" & $B$1:$E$1 & ""*"")) = 1"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 49407
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=SUM(COUNTIF(A1,""*"" & $B$1:$E$1 & ""*"")) = 2"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 5296274
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=SUM(COUNTIF(A1,""*"" & $B$1:$E$1 & ""*"")) = 3"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 15773696
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=SUM(COUNTIF(A1,""*"" & $B$1:$E$1 & ""*"")) = 4"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 255
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False
End Sub