将多个IF语句组合为一个公式

时间:2019-05-07 12:54:49

标签: excel-formula

我正在构建一个公式以充当我的Excel工作表的额外“控制单元”。

文本中的if语句具有预期结果:

如果D2 = 0且E2 = 0且F2 = 0 =>“”

如果D2 = 0且E2> 0且F2 = 0 =>“ m of m2”

如果D2> 0且E2> 0且F2 = 0 =>“ m2 of m3”

如果D2> 0且E2> 0且F2> 0 =>“ m3”

如果D2> 0且E2 = 0且F2> 0 =>“ m2”

如果D2 = 0且E2> 0且F2> 0 =>“ m2 of m3”

如果D2 = 0且E2 = 0且F2> 0 =>“ m”

如果D2> 0且E2 = 0且F2 = 0 =>“ m”

此后我会将这个公式转换为vba,但是我对vba的了解非常有限,所以我只想从excel公式开始。

谢谢。

* edit:到目前为止,该公式始终返回“ m3”,因此,即使所有单元格为空/具有0值,其行为也像所有单元格均大于0。

到目前为止的公式(在荷兰,所以als = if)

=ALS(D3=0&E3=0&F3=0;"";ALS(D3=0&E3>0&F3=0;"m of m2";ALS(D3>0&E3>0&F3=0;"m2 of m3";ALS(D3>0&E3>0&F3>0;"m3";ALS(D3>0&E3=0&F3>0;"m2";ALS(D3=0&E3>0&F3>0;"m2 of m3";ALS(D3=0&E3=0&F3>0;"m";ALS(D3>0&E3=0&F3=0;"m";""))))))))```

1 个答案:

答案 0 :(得分:1)

解释结果表的一种方法是该值等于0或不等于0。您的表格无法涵盖小于0的值。根据这种理解,可能需要使用NESTED IF函数:

=IF(D2=0,IF(E2=0,IF(F2=0,"","m"),IF(F2=0,"m of m2","m2 of m3")),IF(E2=0,IF(F2=0,"m","m2"),IF(F2=0,"m2 of m3","m3")))

或者在excel中,您可以使用CHOOSE函数。由于每个结果都是唯一的,并且基于二进制结果,因此您可以使用以下公式生成从1到8的索引号:

1+(F2>0)+(E2>0)*2+(D2>0)*4

在CHOOSE函数中删除它,并使其更易于管理,然后嵌套IF。它可能如下所示:

=CHOOSE(1+(F2>0)+(E2>0)*2+(D2>0)*4,"","m","m of m2","m2 of m3","m","m2","m2 of m3","m3")

POC

现在也不是VBA专家,我不确定CHOOSE如何转换为VBA。但这将是另一个问题!

更新:ALTIFATE IF函数

=IF(AND(D2=0,E2=0,F2=0),"",IF(AND(E2=0,D2<>F2),"m",IF(AND(D2=0,E2>0,F2=0),"m of m2",IF(AND(E2>0,D2<>F2),"m2 of m3",IF(AND(D2>0,E2=0,F2>0),"m2","m3")))))

有很多方法可以理解逻辑。在这种情况下,我可以按结果对IF函数进行分组。

相关问题