
На своем рабочем листе я хотел бы применить условное форматирование, которое оповещает меня, если выполняется следующее:
IF (len(J7) + len(h14) + len(i14) > 256) = TRUE: apply some formatting on I14.
IF (len(J7) + len(h15) + len(i15) > 256) = TRUE: apply some formatting on I15.
IF (len(J7) + len(h16) + len(i16) > 256) = TRUE: apply some formatting on I16.
IF (len(J7) + len(h18) + len(i18) > 256) = TRUE: apply some formatting on I18.
IF (len(J7) + len(h19) + len(i19) > 256) = TRUE: apply some formatting on I19.
IF (len(J7) + len(h20) + len(i20) > 256) = TRUE: apply some formatting on I20.
...и так далее, и так далее, до бесконечности.
Я создаю строку из трех компонентов, первый компонент всегда находится в J7, затем это комбинация ячеек 'h' и 'i' каждой строки, начиная со строки 14 и продвигаясь вниз. Если строка в этой конкретной строке больше 256 символов, я хотел бы получить уведомление какого-либо рода для этой строки.
Я не могу заставить его работать с помощью инструмента условного форматирования. Я выбираю столбцы, которые хочу отформатировать, затем пишу формулу в панели инструментов условного форматирования и заставляю ее работать в строке 14 так, как мне бы хотелось в строке 14. Но когда я проверяю ячейки в строке 15, те же правила оценивают ячейки в строке 14. По сути, то, чего я добился, — это применил условное форматирование ко ВСЕМ выбранным мной строкам, если первая строка удовлетворяет условиям.
Есть идеи?
Эту проблему не обязательно решать с помощью условного форматирования. VBA или что-то еще подойдет так же хорошо.
решение1
Я не вижу закономерности.
IF (len(J7) + len(h14) + len(i14) > 256) = TRUE: apply some formatting on I14.
IF (len(J7) + len(h15) + len(i15) > 256) = TRUE: apply some formatting on I15.
IF (len(J7) + len(h16) + len(i16) > 256) = TRUE: apply some formatting on I16.
IF (len(J8) + len(h18) + len(i18) > 256) = TRUE: apply some formatting on I18.
IF (len(J9) + len(h19) + len(i19) > 256) = TRUE: apply some formatting on I19.
IF (len(J20) + len(h20) + len(i20) > 256) = TRUE: apply some formatting on I20.
Это ваш реальный шаблон?
IF (len(J14) + len(h14) + len(i14) > 256) = TRUE: apply some formatting on I14.
IF (len(J15) + len(h15) + len(i15) > 256) = TRUE: apply some formatting on I15.
IF (len(J16) + len(h16) + len(i16) > 256) = TRUE: apply some formatting on I16.
IF (len(J18) + len(h18) + len(i18) > 256) = TRUE: apply some formatting on I18.
IF (len(J19) + len(h19) + len(i19) > 256) = TRUE: apply some formatting on I19.
IF (len(J20) + len(h20) + len(i20) > 256) = TRUE: apply some formatting on I20.
решение2
Правило заключается в том, что вам нужно применить формулу, которая применима кверхняя левая ячейкадиапазона - Excel автоматически скорректирует формулу для результата диапазона, как если бы формула копировалась на рабочий лист, поэтому, если вы выберете диапазон, например, I14:I1000
вы можете затем применить формулу, которая будет корректна для I14
, т.е.
=LEN(J$7&H14&I14)>256
Потому что я использовал $ в значении J7, которое "зафиксирует" строку на 7, в то время как другие строки будут увеличиваться. Вы не видите этого явно, но так это работает внутри.
Примечание: вам не нужен оператор IF, просто «тест», который приводит к результату TRUE
илиFALSE
решение3
Выберите столбец(ы), на которые вы хотите повлиять, и используйте эту формулу.
=(LEN($J$7)+LEN($H1)+LEN($I1))>256