Я чрезвычайно новичок в мире VBA и нуждаюсь в некоторой помощи со стороны условного форматирования VBA.Условное форматирование VBA несколько условий
1) мне нужно условное форматирование быть применены к колонку (М)
- зеленый под 7
- желтые от 7-20
- красных больше чем 20
С что если столбец (N), если он указывает NOPO, я не хочу применять условное форматирование.
Я разработал формулу использовать, что указывает на то, что цвет не требуется, но не в состоянии превратить это в VBA условное форматирование (эта формула показывает, какой цвет и если условное форматирование следует применять.
=IF(N2="osno",IF(M2<=7,"green",IF(M2<7,IF(M2>20,"red","less than 20"),IF(M2>20,IF(M2>20,"red","less than 20"),"yellow"))),"no format")
Этот мой текущий сценарий VBA, как вы, несомненно, видеть, что это очень грязный и был из записанного сценария.
Sub Conditional()
'
' Notification_05 Macro
' Conditional Formatting
'
'
Sheets("Final").Select
Columns("M:M").Select
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlLess, _
Formula1:="=8"
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:=xlCellValue, Operator:=xlBetween, _
Formula1:="=8", Formula2:="=20"
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:=xlCellValue, Operator:=xlGreater, _
Formula1:="=20"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 470000
.TintAndShade = 0
ActiveWindow.SmallScroll Down:=-27
Range("M2").Select
With Range("M:M")
.FormatConditions.Add Type:=xlExpression, Formula1:= _
"=LEN(TRIM(M1))=0"
With .FormatConditions(.FormatConditions.Count)
.SetFirstPriority
End With
End With
End With
End Sub
Спасибо,
Bla ke
Ваш '= ЕСЛИ (N2 = "осно", ЕСЛИ (М2 <= 7, "зеленый", ЕСЛИ (M2 <7,IF(M2> 20, "красный", "менее 20"), ЕСЛИ (М2> 20 , IF (M2> 20, «красный», «менее 20»), «желтый»))), «без формата») 'равнозначно' = IF (N2 = "osno", IF (M2 <= 7 , «зеленый», IF (M2> 20, «красный», «желтый»)), «нет формата») ', потому что часть' M2 <7' всегда будет оцениваться как 'False', а вторая' M2> 20', всегда будет «Истиной», если он пройдет мимо первого «M2> 20». Это не поможет вам написать его как код VBA, но это может упростить то, что вы считаете нужным сделать. – YowE3K