Условное форматирование Excel 2007 неправильно использует предоставленную формулу

1631
Charles

В Excel 2007 я хочу условно покрасить строку, если она нечетная, а затем изменить цвет в зависимости от того, содержит ли конкретная ячейка (в столбце E) в этой строке число (зеленый) или пустое (красный). Например, если E15 имеет значение 2, а E13 не имеет записи, я ожидаю, что строка 15 будет зеленой, а строка 13 - красной.

Мои две формулы:
для красного цвета:
=IF((MOD(ROW(),2) = 1),NOT(ISNUMBER(INDIRECT("$E$"&ROW()))), FALSE)
для зеленого цвета:
=IF((MOD(ROW(),2) = 1),ISNUMBER(INDIRECT("E"&ROW())), FALSE)

Если я вставлю эти формулы в ячейки на рабочем листе, я получу ожидаемые значения. Для строки 15 «красное» уравнение неверно, а «зеленое» уравнение верно. Для строки 13 «красное» уравнение истинно, а «зеленое» ложно. Однако если я использую эти формулы в функции формул условного форматирования, все мои строки будут красными, есть мысли?

1

1 ответ на вопрос

2
Rhys Gibson

Ваша проблема INDIRECT. Это не очень хорошо сочетается с вашими условными формулами, что кажется своего рода ограничением INDIRECT.

Тем не менее, я не думаю, что вам это нужно. Если я правильно понимаю ваше требование, вы можете просто изменить зеленую условную формулу на =IF((MOD(ROW(),2) = 1),ISNUMBER($E1), FALSE). Использование $E1заставит формулу переоценивать для каждой строки, поэтому она превращается в:

  • =IF((MOD(ROW(),2) = 1), ISNUMBER($E1), FALSE) для Е1
  • =IF((MOD(ROW(),2) = 1), ISNUMBER($E2), FALSE) для Е2
  • =IF((MOD(ROW(),2) = 1), ISNUMBER($E3), FALSE) для R3
  • и т.п.

Точно так же вы можете заменить свою красную формулу на =IF(MOD(ROW(),2) = 1,NOT(ISNUMBER("$E1)), FALSE)

Я попробую ваше предложение Charles 14 лет назад 0
Лично я бы просто покрасил все альтернативные строки, используя условный формат MOD, а затем перекрасил бы те, что были в цифрах. Таким образом, первое условие намного проще и окрашивает каждую нечётную строку красным, скажем, тогда вторая формула окрашивает те, у которых число в столбце E зелёное. Это не сработает, если вам необходимо обеспечить обратную совместимость со старыми версиями до 2007 года, так как в этом случае нет необходимости использовать старый способ работы с правилами «остановить если истина». AdamV 13 лет назад 0
Вау, это на самом деле работает! Почему числа строк пересчитываются? Robert Koritnik 13 лет назад 0
Дело не в том, что номера строк вычисляются, а в том, что единственный способ определить, в какой строке находится ячейка, это использовать ROW () Rhys Gibson 13 лет назад 0
@Rhys: Я имел в виду следующее: почему $ E1 заставляет формулу переоценивать себя? И как он узнает, что он должен измениться на другой номер строки? Robert Koritnik 13 лет назад 0
@Роберт. Я изо всех сил пытаюсь объяснить это просто. Это работает как обычная формула. Когда вы копируете формулу по ячейкам, она автоматически обновляет номера строк / столбцов, чтобы обеспечить их синхронизацию. Вы используете знак $, чтобы убедиться, что компонент не изменяется. do $ E1 изменится на $ E2, когда вы перетаскиваете его, но остаетесь как $ E1, если вы перетаскиваете его. То же самое E $ 1 останется E $ 1, когда вы перетащите его вниз, но измените на F $ 1, когда вы перетаскиваете его. То же самое для формул условного форматирования, где вы хотите, чтобы одна и та же формула применялась к нескольким ячейкам. Rhys Gibson 13 лет назад 0

Похожие вопросы