Мне нужно иметь возможность использовать следующую формулу в Excel, чтобы выбрать формулу, используемую на другом листе, на основе значений в раскрывающихся меню в ячейках D2 и D3 . Единственная проблема заключается в том, что формула содержит более 7 вложенных выражений IF, что, по словам Excel, неверно.

Указанная формула не может быть введена, поскольку она использует больше уровней вложенности, чем допустимо в текущем формате файла.

Как я могу разбить эту формулу, чтобы иметь возможность достичь того же результата?

= ЕСЛИ (D2 = 1, Dropdowns!С8, ЕСЛИ (И (D2 = 2, D3 = "I"), Dropdowns!С9, ЕСЛИ (И (D2 = 2, D3 = "II"), Dropdowns!С10, ЕСЛИ (И (D2 = 2, D3 = "IIIa, б"), Dropdowns!С11, ЕСЛИ (И (D2 = 3, D3 = "I"), Dropdowns!C12, IF (AND (D2 = 3, D3 = "II"), выпадающие списки!C13, если (и (D2 = 3, D3 = "IIIa"), выпадающие списки!C14, если (и (D2 = 3, D3 = "IIIb"), выпадающие списки!C15, если (и (D2 = 4, D3 = "I"), выпадающие списки!C16, если (и (D2 = 4, D3 = "II"), выпадающие списки!C17, если (и (D2 = 4, D3 = "IIIa, b"), выпадающие списки!С18, "ошибка")))))))

1 ответ1

1

Альтернатива многим вложенным IF

Когда вам требуется длинная серия вложенных IF, существует другой подход, который не ограничивает вас вложенным пределом IF. Он использует подход "выбора", который также может быть легче создать, потому что он визуально более прост.

Вложенные IF оценивают условия последовательно, пока не найдут то, которое является истинным. Логика и выходные значения представляют собой смешанные серии. Альтернативный подход оценивает все условия за один шаг и использует результат, чтобы выбрать правильное значение из списка.

Он сочетает в себе два метода, функцию CHOOSE и логическое выражение. В Excel 2003 вы можете выбрать до 29 значений. Excel 2007 и более поздние версии допускают до 254 выборов без использования каких-либо операторов IF.

ВЫБЕРИТЕ функцию

У вас есть длинная формула, поэтому я не буду воспроизводить все это, но вот подход (заполнитель "индекс" объясняется в следующей части):

=CHOOSE(<index>,"Error",Dropdowns!C8,Dropdowns!C9,Dropdowns!C10, ...)

Весь ваш список значений результатов оператора IF включается. То, как это работает, заключается в том, что "индекс" вычисляется из всех условий, которые являются частью вашей вложенной цепочки IF. Результатом будет порядковый номер значения в списке ВЫБРАТЬ.

Индекс

В индексе используется логическая арифметика (расчеты основаны на значениях 0/1 условий True/False). Вы строите индекс как выражение:

1 + condition1 * 1 + condition2 * 2 + condition3 * 3 + ...

Начальная 1 будет объяснена через минуту. Остальные - все ваши условия теста IF в соответствующем порядке, чтобы соответствовать списку результатов. Каждый тест оценивается в 1 или 0, который затем умножается на связанный с ним номер индекса (1, 2, 3, ... после каждого условия). Поскольку только один из этих тестов будет истинным, он определяет значение индекса (сумма нулей для всех ложных условий плюс значение индекса для истинного).

Подстановка условий теста из вашего вложенного примера IF будет выглядеть так:

1 + (D2=1)*1 + AND(D2=2,D3="I")*2 + AND(D2=2,D3="II")*3 + ...

Все выражение заменяет заполнитель <index> в формуле, показанной под заголовком CHOOSE Function. Функция выбора затем выбирает целевое значение из списка на основе индекса.

Ваша ошибка состоит в том, что если ни один из тестов не соответствует действительности, то оценка будет равна нулю. Индекс - это номер позиции значения в списке, который начинается с 1. Добавление 1 к вычислению индекса (показывается как первое слагаемое) делает условие ошибки равным 1 и увеличивает все остальные результаты на 1. Поэтому первым результатом в списке является ваше сообщение об ошибке.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .