【问题标题】:Excel: Nested IF statement if all condition are true return all true valuesExcel:如果所有条件都为真,则嵌套 IF 语句返回所有真值
【发布时间】:2016-04-20 17:20:24
【问题描述】:

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

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

【问题讨论】:

    标签: excel if-statement concatenation nested-if


    【解决方案1】:

    如果没有“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] :该公式中所有IFs 的总数
    • [NS] : 无解时的表达式为真
    • [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"))," ","/")
    

    如果您还有任何问题,请尽管提问。

    【讨论】:

    • 你和@BruceWayne 的组合使它更短一些; =TRIM(SUBSTITUTE(IF(AND(I4=J1,J4=1),"2G"," ") & IF(AND(Q4=1,V4=1)," 3G"," ") & IF(AND(AC4=1,AG4=1)," 4G"," ")," ","OTHER"))如果有3个空格返回OTHER被替换。
    • @Dirk 我只想插入“2G”一次,但如果我签入一个,如果它检查两个条件都为真。如何拆分 if 语句以检查每个但不添加 2G 的文本?
    • 你的意思是OR(I4=1,J4=1)
    • @ScottCraner 但是 false/false/true 会返回“other4G”...但是=TRIM(SUBSTITUTE(IF(OR(I4=J1,J4=1),"2G"," ") & IF(AND(Q4=1,V4=1)," 3G"," ") & IF(AND(AC4=1,AG4=1)," 4G"," ")," ","other")) 如果不是 4G 则带有 2 个空格,并且替换 4 个空格就可以了... ;)
    • 我不想刻薄,但请停止改变问题,否则这件事永远不会结束......
    【解决方案2】:

    您只有一个 If() 公式,因此一旦找到第一个 TRUE,它就会停止。相反,只需将它们连接起来:

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

    编辑:刚刚意识到这可能会给您留下一个显示“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”。与Q4V4 相同,如果其中一个是1,则返回“3G”。

    【讨论】:

    • Dangnabbit,你比我快一个。
    • @ScottCraner - 它一定会最终发生!现在你知道我有时的感受了:P
    • @BruceWayne 如果我想对每个单元格进行拆分检查,比如If(And(I4=J1),"2G","")&If(And(J4=1),"2G",""),这仍然有效吗?我只想插入“2G”一次,但如果我签入一个if,它会检查两个条件是否为真
    • @Sarah - 抱歉,你能解释一下你的意思吗?如果您只是比较一个值,则不需要And()。所以你可以做If(I4=J1,"2G","") & If(J4=1,"2G","") 。你是什​​么意思“......但是如果我签入一个如果它检查两个条件都为真”?
    • AND改成OR
    猜你喜欢
    • 2022-11-25
    • 2012-10-12
    • 2021-10-15
    • 2016-05-03
    • 1970-01-01
    • 2018-01-24
    • 2013-05-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多