(извиняюсь, если этот вопрос трудно понять, я не могу опубликовать изображение)

Я пытался найти решение для этого онлайн, но мне не повезло.

В идеале я хочу использовать условное форматирование, чтобы выделить каждую ячейку в ряду дат между двумя датами. Там одна проблема .. Я хочу, чтобы цвет определялся значением, основанным на другой ячейке ... если это можно сделать с помощью модуля, то отлично!

то есть я вставлял каждый день в календарь горизонтально по всей таблице от F2 в течение всего года. IF C2 = 01/12/14 и D2 = 24/12/14 и E2 = 3. Все ячейки между датами C2 и D2 будут заполнены красным цветом. Аналогично, если IF C3 = 01/05/14 и D3 = 05/05/14 и E3 = 2, ячейки будут заполнены синим цветом.

Спасибо

1 ответ1

1

Я не верю, что есть какой-либо метод динамического выбора цвета при использовании встроенного в 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.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .