Я хочу вернуть несколько значений для всех истинных операторов. Я использую следующую формулу:

=IF(
AND(I4=1,J4=1),"2G",
IF(
AND(Q4=1,V4=1),"3G",
IF(
AND(AC4=1,AG4=1),"4G",
"Other")))

Однако это возвращает первое истинное значение из вложенного IF. Я хочу вернуть все три значения, 2G 3G 4G, если все они верны. Что-то вроде результата concatenated.

0
Sarah 20 Апр 2016 в 20:20

2 ответа

Лучший ответ

Чтобы не получить «2G3G4G» и, либо, чтобы получить «другое», если ни одно из них не соответствует действительности, я предлагаю что-то вроде этого:

=TRIM(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE("     "," ",IF(AND(I4=1,J4=1)," 2G"," "),1)," ",IF(AND(Q4=1,V4=1),"3G "," "),3)," ",IF(AND(AC4=1,AG4=1),"4G"," "),5),"     ","other"))

Если у вас есть какие-либо вопросы просто спросить ;)

ИЗМЕНИТЬ :

Для вопросов, которые меняются по мере получения ответов, я приведу "общий" код.

Если вы хотите выстроить все решения, вы можете использовать это:

=SUBSTITUTE(SUBSTITUTE(TRIM(SUBSTITUTE(IF([C_1],[E_1]&" ","  ")&IF([C_2],[E_2]&" ","  ")&...&IF([C_n],[E_n],"  "),REPT("  ",[TC]),[NS]))," ",[ND]),[SR]," ")
  • [C_1], [C_2], ..., [C_n]: условия для каждого отдельного выражения
  • [E_1], [E_2], ..., [E_n]: сами выражения
  • [TC]: общее количество всех IF в этой формуле
  • {{X 0}}: выражение, если нет решения истинно
  • [ND]: новый разделитель, который вы хотите
  • [SR]: использованная "замена пространства"

Примечание. В этом решении нельзя использовать выражения, содержащие пробелы. Просто замените их символом, который вы не используете, например подчеркиванием. (Выражение типа "Exp. 1" будет "Exp._1") Это будет изменено обратно в конце с помощью [SR].

Итак, ваше решение будет выглядеть так:

=SUBSTITUTE(SUBSTITUTE(TRIM(SUBSTITUTE(IF(OR(I4=1,J4=1),"2G ","  ")&IF(AND(Q4=1,V4=1),"3G ","  ")&IF(AND(AC4=1,AG4=1),"4G","  "),REPT("  ",3),"other"))," ","/"),[SR]," ")

Поскольку ваши выражения не содержат пробелов, часть [SR] - можно пропустить:

=SUBSTITUTE(TRIM(SUBSTITUTE(IF(OR(I4=1,J4=1),"2G ","  ")&IF(AND(Q4=1,V4=1),"3G ","  ")&IF(AND(AC4=1,AG4=1),"4G","  "),REPT("  ",3),"other"))," ","/")

Если у вас остались вопросы, просто задавайте.

4
Dirk Reichel 21 Апр 2016 в 17:13

У вас есть единственная формула If(), поэтому она остановится, как только будет найдено первое ИСТИНА. Вместо этого просто объедините их:

=If(And(I4=1,J4=1),"2G","") & if(and(q4=1,v4=1),"3G","") & if(and(ac4=1,ag4=1),"4G","")

Edit: Только что понял, что это может оставить вас с ячейкой с надписью «2G3G4G», что, как я полагаю, не совсем то, что вам нужно. Если нужно, просто добавьте разделитель запятой.

Edit2: в вашем комментарии вам может понадобиться следующее:

=If(Or(I4=1,J4=1),"2G","") & if(Or(q4=1,v4=1),"3G","") & if(Or(ac4=1,ag4=1),"4G","")

Это проверит, если I4=J1 или J4=1. Если один из них - 1, он вернет "2G". То же самое с Q4 и V4, если один из них равен 1, он вернет "3G".

3
BruceWayne 20 Апр 2016 в 18:39