2017-01-08 2 views
0

Моя проблема в программировании в excel (создайте формулу для правила условного форматирования).Как применить правило условного форматирования ко всем строкам, кроме первой строки?

Если я использую следующую формулу в моем формате условие формулы:

=INDIRECT("A"&ROW())>1 

и применять на все строки включают первую строки со следующим диапазоном в Apply to поле:

$A:$F 

Результат: Хорошо работает.


Но я хочу применить его ко всем строкам кроме первой строки. Таким образом, я изменил его:

=AND(INDIRECT("A"&ROW())>1;ROW()>1) 

Результат: Сейчас он не работает на любой строке.


Какая у меня ошибка в приведенной выше формуле?

ответ

1

Сначала ваш вопрос сбивает с толку. Вы можете «применить правило условного форматирования ко всем строкам, кроме первой строки», применяя его не к $A:$F, а к $A$2:$F$1048576.

Но я подозреваю, что вы хотите применить его ко всем строкам в столбцах $A:$F, но затем он должен исключать строку 1 во время тестирования.

Если так, то ваша проблема - неустойчивое поведение INDIRECT. Но INDIRECT здесь не нужен. Ваше первое условие можно записать в виде:

=($A1>1) 

Это потому, что даже условное форматирование будет уважать разницу между фиксированными и переменными ссылками на ячейки с помощью $ или опуская $. Таким образом, эта формула, примененная к $A:$F, проверит, $A1>1 в первом ряду, $A2>1 во втором ряду, $A3>1 в третьем ряду и так далее. Это связано с тем, что столбец $A фиксирован с использованием $ и поэтому является абсолютной ссылкой на столбец A, но номер строки 1 не является фиксированным и поэтому является относительной ссылкой на фактическую строку ..

Применительно к $A:$F

enter image description here

это будет иметь такое же поведение, как ваша INDIRECT формула, которая: Есть Формат текущей строки, если значение первой ячейки в этой строке больше, чем 1:

enter image description here

Затем, чтобы исключить первую строку можно с помощью:

=AND($A1>1,ROW()>1) 

Одним из недостатков при использовании относительных ссылок на ячейки в условном форматировании является то, что они должны быть изменены, если диапазон, на котором она применяется изменения. Например, в этом случае, если кто-то вставляет строку выше строки 1.

Но даже тогда INDIRECT не требуется. Тогда мы можем использовать INDEX - MATCH:

=(INDEX($A:$A,ROW())>1) 

и

=AND(INDEX($A:$A,ROW())>1,ROW()>1) 
+0

я писал в вопрос, что моя первая формула ('= INDIRECT ("A" & СТРОКА())> 1 ') работает очень хорошо без каких-либо проблем он работает с базовым значением '$ A1', значением $ A2', значением $ A3' и ... Но ваше предложение (' $ A1> 1') имеет совершенно другой результат, и это не моя проблема! Моя проблема заключается в добавлении условия к формуле, кроме первой строки. Я использовал свою окончательную формулу ('= AND (INDIRECT (« A »& ROW())> 1; ROW()> 1)') в ячейке, и она тоже работает! Но доза не работает в формуле условия в условном правиле форматирования. – RAM

+0

Формула '= ($ A1> 1)' будет иметь абсолютный тождественный результат, такой как '= INDIRECT (« A »и ROW())> 1', если оно применяется как условное форматирование на' $ A: $ F'. Какой другой результат он должен иметь? Как упоминалось в моем ответе, проблема, использующая 'INDIRECT', связана с ее изменчивым поведением. –

+0

Ваше правило '= $ A1> 1' означает: форматировать текущую строку, если значение' $ A1' (** первая ячейка в первой строке **) больше, чем '1'. Но '= INDIRECT (« A »& ROW())> 1' означает: Do Format current row, если значение ** первой ячейки в текущей строке ** больше, чем' 1'. Так, например, если я использую значение '= $ A1> 1' и' $ A1', равное '2', тогда все строки будут форматами с этим правилом! и это полностью отличается от моей цели. – RAM