Excel:如果所有条件都为真,嵌套的IF语句返回所有的真值

我想为所有执行的语句返回多个值true。 我使用下面的公式:

=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结果。

如果没有得到“2G3G4G”,也不能得到“其他”,我build议如下:

 =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")) 

如果你有问题,就问吧 ;)

编辑

对于正在改变的问题,我们将提供一些“通用”代码。

如果你想让所有的解决scheme排队,你可以使用这个:

 =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] :每个不同expression式的条件
  • [E_1][E_2] ,…, [E_n] :expression式本身
  • [TC] :此公式中所有IF的总数
  • [NS] :表示如果没有解决scheme是真实的
  • [ND] :你想要的新的分隔符
  • [SR] :使用的“空间replace”

注意:对于此解决scheme,不能使用包含空格的expression式。 只要将它们replace为不像下划线那样的符号即可。 (像"Exp. 1" "Exp._1"这样的expression将是"Exp._1" )这将通过[SR]在末尾改回。

所以你的解决scheme看起来像这样:

 =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]," ") 

由于您的expression式不包含空格,因此可以跳过[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"))," ","/") 

如果你还有什么问题,就问。

你有一个单独的If()公式,所以一旦find第一个TRUE就会停止。 相反,只需连接它们:

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

编辑:刚才意识到这可能会留下一个单元格,说“2G3G4G”,我认为是不是你想要的。 只需要添加一个逗号分隔符。

编辑2:根据你的评论,你可能想要这样的:

=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”。 与Q4V4 ,如果其中任一个是1 ,则返回“3G”。