我正在构建一个公式以充当我的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";""))))))))```
答案 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")
现在也不是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函数进行分组。