Как применить несколько (более двух) условий в одной ячейке в Excel?

#excel #function

#excel #функция

Вопрос:

Я давно работаю в Excel, но только с основами. Прямо сейчас я сталкиваюсь с небольшой сложной задачей, поэтому я публикую вопрос здесь.

Я создал пользовательский счет-фактуру для своего магазина. За пределами области печати счета-фактуры у меня есть один столбец, в котором указывается, является ли кабель удлинительным или модульным (в этой ячейке есть формула VLOOKUP), и другая ячейка с именем order type, которая определяет, основан ли весь счет-фактура либо на расширении, либо на модульном, либо на обоих (mix).

Условие здесь простое — из ячеек I13 — I23 будут отображаться типы кабелей, будь то модульные или удлинительные. Если во всех ячейках указано расширение, то в ячейке типа заказа будет отображаться расширение, если во всех ячейках указано модульное, то в ячейке типа заказа будет отображаться модульное, если и модульное, и расширение отображаются более чем в одной ячейке в диапазоне от I13 до I23, тогда тип заказа будет отображаться смешанным, если ничего не указано.отображается в любой из ранжированных ячеек, тогда ячейка типа заказа останется пустой.

введите описание изображения здесь

Я попробовал функции If, OR, AND . Но я думаю, что я делаю ошибки.

Ответ №1:

Вы можете попробовать следующий подход. Я предположил, что все ячейки не всегда могут быть заполнены, и все же вы хотели бы Modular , чтобы и Extension отображалось, если все заполненные ячейки имеют одно значение.

=IF(COUNTA(I13:I23)=0,"",IF(COUNTIF(I13:I23,"Modular")=COUNTA(I13:I23),"Modular",IF(COUNTIF(I13:I23,"Extension")=COUNTA(I13:I23),"Extension","Mixed")))

Редактировать: приведенная выше формула завершится ошибкой, если в формуле есть пробелы. Если у вас Office 365, вы можете протестировать приведенную ниже формулу и посмотреть, поможет ли она.

=IF(TEXTJOIN("",TRUE,UNIQUE(I13:I23))="Modular","Modular",IF(TEXTJOIN("",TRUE,UNIQUE(I13:I23))="Extension","Extension",IF(TEXTJOIN("",TRUE,UNIQUE(I13:I23))="","","Mixed")))

Если у вас нет Office 365, то формула, предоставленная @ScottCraner, должна работать.

Редактировать 2: я публикую формулу, которая должна работать, если у вас нет Office 365.

=IF(COUNTIF(I13:I23,"")=11,"",IF(SUMPRODUCT((I13:I23<>"") 0)=SUMPRODUCT((I13:I23="Modular") 0),"Modular",IF(SUMPRODUCT((I13:I23<>"") 0)=SUMPRODUCT((I13:I23="Extension") 0),"Extension","Mixed")))

Логика такая, как показано ниже:

Сначала проверьте, все ли ячейки являются пустыми ( =IF(COUNTIF(I13:I23,"")=11,"" )

Если нет, то проверьте, все ли не-пробелы ( SUMPRODUCT((I13:I23<>"") 0) ) Modular

Если нет, то проверьте, все ли пробелы Extension

Если все три условия не выполняются, выдайте результат как Mixed .

Комментарии:

1. Существует одна проблема с COUNTA. Как указано в OP, значения в I13:I23 возвращаются формулой, что означает, что они возвращают нулевую строку и не являются полностью пустыми. COUNTA будет считать возврат формулы "" как положительный возврат, и подсчет будет отключен.

2. Здравствуйте. Я скопировал и вставил вашу формулу, но она всегда отображается смешанной, даже с пустыми ячейками. Проверьте здесь — imgur.com/S7ex86p

3. @Md.ImranHossain Пожалуйста, ознакомьтесь с редактированием и другим решением формулы.

4. @ScottCraner Я полностью пропустил VLOOKUP детали. Спасибо, что указали на это.

5. О да! Я скопировал и вставил формулу, и она работает просто отлично. Большое вам спасибо. Хотя я не понимаю ни одной функции или логики, используемой в этом утверждении. : P

Ответ №2:

Используйте SUMPRODUCTS в IF:

  =IF(SUMPRODUCT(--(I13:I23<>""))=SUMPRODUCT(--(I13:I23="Modular")),"Modular",IF(SUMPRODUCT(--(I13:I23<>""))=SUMPRODUCT(--(I13:I23="Extension")),"Extension","Mix"))
 

Комментарии:

1. Здравствуйте. Я скопировал и вставил вашу формулу, но она всегда показывает модульную, даже с пустыми ячейками. Проверьте здесь — imgur.com/tIictHW