Não acredito que exista qualquer método para escolher dinamicamente a cor ao usar a formatação condicional incorporada do Excel. Você poderia, como você adivinhou, usar algum VBA para realizar isso.
Supondo que a coluna C tenha a data mais baixa no intervalo, a coluna D tenha a data superior no intervalo, a coluna E contém um índice de cores (consulte aqui ), e a coluna F tem a data que estamos testando (e esta é a célula que estamos colorindo) você pode criar a seguinte sub-rotina:
Public Sub update_colors()
Dim rngDates As Range
Set rngDates = Sheet1.Range("F2:F3")
Dim rngDateCell As Range
For Each rngDateCell In rngDates.Cells
If Sheet1.Cells(rngDateCell.Row, 3).Value <= rngDateCell.Value And Sheet1.Cells(rngDateCell.Row, 4).Value >= rngDateCell.Value Then
rngDateCell.Interior.ColorIndex = Sheet1.Cells(rngDateCell.Row, 5).Value
End If
Next rngDateCell
End Sub
Defina F2: F3 na terceira linha para o intervalo inteiro de datas em sua planilha.
Você pode iniciar esta sub-rotina / udf com um botão. Na guia do desenvolvedor (vá em aqui para obter instruções sobre como ativá-lo, se você não tiver já) Clique em "Inserir" e escolha o botão em "Controles de formulário". Desenhe o botão em algum lugar da folha (você pode movê-lo depois) e escolha a sub-rotina que acabou de criar na lista. Agora, quando você clica no botão, a sub-rotina será executada.
Se você não gosta das cores, pode usar algo além de .interior.colorindex () para definir a cor da célula. Eu sou um grande fã .Interior.Color = RGB (,) Você precisaria ter os valores RGB na planilha em algum lugar para conseguir isso, mas você terá milhões de cores para escolher, em vez de apenas os 56 que colorindex permite.