Я не верю, что есть какой-либо метод динамического выбора цвета при использовании встроенного в Excel условного форматирования. Вы могли бы, как вы уже догадались, использовать некоторые VBA для достижения этой цели.
Предполагая, что столбец C имеет нижнюю дату в диапазоне, столбец D имеет верхнюю дату в диапазоне, столбец E содержит индекс цвета (см. Здесь), а столбец F содержит дату, которую мы тестируем (и это ячейка, которую мы окрашиваем. ) вы можете создать следующую подпрограмму:
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
Установите F2:F3 в третьей строке на весь диапазон дат в вашей рабочей таблице.
Вы можете запустить эту подпрограмму /udf с помощью кнопки. На вкладке разработчиков (перейти сюда для получения инструкций о том , как включить его, если вы еще не сделали) Нажмите кнопку "Вставить" и нажмите кнопку в разделе "Форма управления". Нарисуйте кнопку где-нибудь на листе (вы можете переместить ее потом) и выберите подпрограмму, которую вы только что создали из списка. Теперь, когда вы нажмете кнопку, подпрограмма запустится.
Если вам не нравятся цвета, вы можете использовать что-то кроме .interior.colorindex() для установки цвета ячейки. Я большой поклонник.Интерьер.Color = RGB(,,) Вам нужно было бы где-то иметь значения RGB на листе, но у вас будет выбор из миллионов цветов вместо 56, которые позволяет colorindex.