Вложенное условное форматирование Excel с косвенными ссылками

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

= INDIRECT( ADDRESS( IF( ISEVEN( ROW() ), ROW() - 1, ROW() ), 22) ) = "6 Monthly"

Как и это:

= OR( COLUMN() = 25, COLUMN() = 28)

Но объединение формул не позволяет применить какой-либо формат. Ошибка не возвращается, но выделенная область не затрагивается применением условия:

AND( INDIRECT(ADDRESS(IF(ISEVEN(ROW()), ROW() - 1, ROW()), 22)) = "3 Monthly", OR( COLUMN() = 25, COLUMN() = 28) )

Если я хочу, чтобы ячейки, в которых выполняются оба условия, были выделены, что я должен ввести в качестве формулы?


person user2727391    schedule 16.01.2014    source источник
comment
Я применяю это правило к диапазону $W$11:$AB$48, где каждая вторая ячейка в столбце 22 (V) имеет строку типа 3 Ежемесячно. План состоит в том, что каждая ячейка, в которой соответствующая ячейка столбца 22 имеет значение 3 Ежемесячно И тематическая ячейка находится в столбце 25 (Y) или 28 (AB), должна быть выделена. Можете ли вы сказать мне, почему оператор ИЛИ недействителен? Оказалось, что это сработало, поскольку все ячейки в этих столбцах были выделены, когда я применил только это условие.   -  person user2727391    schedule 16.01.2014
comment
За деревьями леса не видно... :)   -  person user2727391    schedule 16.01.2014
comment
Случай со странным поведением. Я ожидаю сообщения об ошибке, если оно завершится ошибкой, и если я введу комбинированную формулу в фактическом содержимом ячейки, ячейки, которые я хочу выделить, вычисляются как «1». По какой-то причине это просто не подходит как формула условного форматирования.   -  person user2727391    schedule 16.01.2014


Ответы (3)


Это работает для меня:

=(INDIRECT(ADDRESS(IF(ISEVEN(ROW()),ROW()-1,ROW()),22))="3 Monthly")*(OR(COLUMN()=25, COLUMN()=28))
person Dmitry Pavliv    schedule 16.01.2014
comment
@pnuts, у меня excel 2013, но эта формула у меня тоже не работает AND( INDIRECT(ADDRESS(IF(ISEVEN(ROW()), ROW() - 1, ROW()), 22)) = "3 Monthly", OR( COLUMN() = 25, COLUMN() = 28) ), но = INDIRECT( ADDRESS( IF( ISEVEN( ROW() ), ROW() - 1, ROW() ), 22) ) = "6 Monthly" и = OR( COLUMN() = 25, COLUMN() = 28) работают нормально - person Dmitry Pavliv; 16.01.2014
comment
@pnuts, у тебя работает формула And(,)? Я понятия не имею, почему он не ведет себя должным образом для меня .. - person Dmitry Pavliv; 16.01.2014
comment
@pnuts, у меня такой результат. Это неправильно? dropbox.com/s/c1ewb82k9jndbpk/image.JPG - person Dmitry Pavliv; 16.01.2014
comment
У меня работает (Excel 2010, кстати, @pnuts). В моем случае ячейки V27, 29 и 31 содержат 3 месяца, а ячейки Y27: Y32 и AB27: AB32 теперь выделены. Может быть, Excel по-разному обрабатывает логические операторы в условном форматировании или, может быть, результат выражения AND() неправильно интерпретируется как TRUE? - person user2727391; 17.01.2014

Ваши формулы условного форматирования кажутся мне слишком сложными

Выберите Y11:Y48 и, удерживая нажатой клавишу CTRL, также выберите AB11:AB48 и примените формулу условного форматирования.

=$V11="3 Monthly"

Формат по мере необходимости

Это выделит ячейки столбца Y и AB в каждой строке, где col V = «3 Monthly» - разве это не требование?

person barry houdini    schedule 16.01.2014
comment
Да, я мог бы просто выбрать ваш более простой вариант, хотя решение simoco работает, и я до сих пор не понимаю, почему, по общему признанию, слишком сложная формула не сработала. - person user2727391; 17.01.2014
comment
Я согласен - трудно понять, почему ваша версия не сработала - вы использовали = AND (условие1, условие2), тогда как решение simoco = (условие1) * (условие2) - оба они обычно работают, но не здесь - я не не знаю точную причину, но, вероятно, потому, что функция ROW() возвращает массив типа {25}, а не 25 - в некоторых случаях это не проблема, но в других случаях это так. Я предполагаю, что умножение с использованием * приводит к тому, что массив становится числом, но И не делает того же - person barry houdini; 17.01.2014

Используйте 1_:

=IF(INDIRECT(ADDRESS(IF(ISEVEN(ROW()),ROW()-1, ROW()),22))="3 Monthly",OR(COLUMN()=25,COLUMN()=28),0)

Надеюсь это поможет.

person L42    schedule 16.01.2014
comment
Боюсь, не повезло. Все равно никакого эффекта. Также я не уверен, что IF является правильным инструментом, потому что я пытаюсь выделить, где оба условия верны одновременно, а не по отдельности, т.е. Пересечение условий, а не Союз. - person user2727391; 16.01.2014