Excel: почему эта формула условного форматирования не работает? - PullRequest
0 голосов
/ 12 мая 2018

У меня есть таблица Excel (не спрашивайте) с таблицей 4x6 с заголовками День 1 , День 2 , День 3 и Total .Однако формула изменяет местоположение Всего в соответствии с датой, поэтому в любой момент День 3 можно удалить и вместо него заменить на Всего , еслиdate определяет, что у нас есть только день 2 , поэтому нам пока не нужно отображать заголовки для день 3 .

Я хотел использовать условное форматирование для стилизации всегов Итого определенным образом, поэтому я написал эту формулу для опции Используйте формулу, чтобы определить, какие ячейки форматировать :

=IF(INDIRECT(CONCATENATE(CHAR(COLUMN()+64), 1)) = "Total", TRUE, FALSE)

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

Для устранения неполадок я попытался выбрать только один столбец (то есть C ) и применить измененную форму правила только к этому:

=IF(INDIRECT(CONCATENATE("C", 1)) = "Total", TRUE, FALSE)

... Это сработало!Затем я попытался просто поместить первую формулу в ячейку, и она правильно отображала TRUE и FALSE .Кажется, все работает, но по какой-то причине я не мог понять, что условное форматирование никогда не будет применено.

Может кто-нибудь объяснить, почему?

PS в вопросе, который я написалупрощенный пример, на самом деле у меня есть 31 день вместо трех, так что было бы очень сложно пройти каждый столбец отдельно

Ответы [ 2 ]

0 голосов
/ 13 мая 2018

INDIRECT(CONCATENATE(CHAR(COLUMN()+64), 1)), вероятно, является наихудшим из возможных способов ссылки на ячейку в первом ряду и том же столбце.

Вместо этого:

INDIRECT(CONCATENATE(CHAR(COLUMN()+64), 1)) = "Total"

Попробуйте это (например, для правила условного форматирования в столбце A и примените правило там, где оно вам еще понадобится):

A$1 = "Total"

Эти две формулы имеют одинаковый эффект.

0 голосов
/ 12 мая 2018

ОК ... Я решил это сам. Оказывается, моя формула была полностью правильной, но по какой-то странной причине ей не понравилось утверждение IF; Я заменил его на:

INDIRECT(CONCATENATE(CHAR(COLUMN()+64), 1)) = "Total"

и все отлично работает!

Однако я все равно буду признателен, если кто-нибудь сможет объяснить, почему это произошло (для дальнейшего использования)

...