Verifique se esta solução baseada em VBA está bem com você. Ele ainda cria internamente as mesmas regras de formatação condicional conforme o necessário, mas, por meio do código VBA, decide agora o índice de cores com base na cor das células em I4 e I5.
Este exemplo segue o mesmo intervalo da sua pergunta. Intervalo B4: D6 para aplicar formatação condicional e usar cor de referência de I4 & I5.
Em sua planilha, diga Sheet1, pressione ALT + F11
. O editor do VBA será aberto. Clique duas vezes em Sheet1 no painel esquerdo e, no lado direito, selecione Editor de código (First Drop Down) e, em seguida, Change Event (Second Drop Down).
Após a sub-rotina, o espaço reservado estará disponível para você.
Private Sub Worksheet_Change(ByVal Target As Range)
End Sub
Dentro desta sub-rotina, coloque o código VBA abaixo.
'On WorkSheet Change Event Check for Change in C5 and that too if X or O is entered in it.
If Target.Address = "$C$5" Then
If UCase(Target) = UCase(Range("G4").Value) Or UCase(Target) = UCase(Range("G5").Value) Then
'First clear the Conditional formatting at B4:D6
Range("B4:D6").Select
Selection.FormatConditions.Delete
Range("C5").Select
'Set the conditional formatting at B4:D6
Range("B4:D6").Select
Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$C$5=$G$4"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.Color = Range("I4").Interior.Color
End With
Selection.FormatConditions(1).StopIfTrue = False
Range("B4:D6").Select
Selection.FormatConditions.Add Type:=xlExpression, Formula1:="=$C$5=$G$5"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
.Color = Range("I5").Interior.Color
End With
Selection.FormatConditions(1).StopIfTrue = False
Range("C5").Select
End If
End If
Salve e saia do editor do VBA. Agora, toda vez que você alterar o valor no código C5 da célula, verificará se é C5 e se X ou O são inseridos nele e recriar as regras de formatação condicional se aplica a B4: D6 com base na cor de I4 & I5.
No entanto, você precisará inserir novamente o valor em C5 para que este código funcione depois de modificar a cor de segundo plano em I4 e / ou I5. VBA Não oferece nenhum evento de mudança de cor de fundo para capturar nativamente. No entanto, seria possível interceptar esses eventos usando o código VBA novamente.