Динамический выбор диапазона условного форматирования на основе значения ячейки - PullRequest
0 голосов
/ 13 декабря 2018

ищет для этого условный трюк форматирования.

если значение ячейки A1 = 1, ячейка B1 должна быть отформатирована.Если значение A1 = 2, то ячейка B2.

диапазон условного форматирования должен изменяться динамически в зависимости от значения ячейки A1.

1 Ответ

0 голосов
/ 13 декабря 2018

Эту проблему легко решить с помощью Условное форматирование , VBA не требуется.

Отметьте ячейки B1 + B2, выберите Условное форматирование (из Home-Tab)), Новое правило, выберите «Использовать формулу ...», введите =$A$1=ROW() в качестве формулы и установите для параметра Формат все, что вам нужно.

ОБНОВЛЕНИЕ (после вашего комментария, что вы хотитедля форматирования) Если диапазоны, которые вы хотите отформатировать, всегда имеют одинаковый размер и одинаковое расстояние, вы можете использовать формулу, такую ​​как

=AND(MOD(COLUMN()-1,4)>0,INT((COLUMN()-1)/4)+1=$A$1,ROW()>=5,ROW()<=10)

. Это проверяет, находится ли строка между 5 и 10, и делит столбецна 4, чтобы проверить, в каком «блоке» вы находитесь.Mod -часть предотвращает форматирование col A, E ...

Если блоки, которые вы хотите отформатировать, являются более сложными, вы можете решить это с помощью UDF:

Public Function calcFormattingVal(r As Range) As Integer
    If Not Intersect(Range("B5:D10"), r) Is Nothing Then
        calcFormattingVal = 1
    ElseIf Not Intersect(Range("F5:H10"), r) Is Nothing Then
        calcFormattingVal = 2
    Else
        calcFormattingVal = -999
    End If
End Function

Теперь поместите следующую формулу в качестве условного форматирования.Помните, что вы должны передать адрес верхней левой ячейки, с которой начинается форматирование, в качестве параметра функции.Поэтому, если вы отметите диапазон "B5:H12", используйте B5 в качестве параметра.

=calcformattingval(B5)=$A$1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...