#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