excel中的嵌套if计算

excel中的嵌套if计算,excel,if-statement,excel-formula,nested,Excel,If Statement,Excel Formula,Nested,我有一个计算专栏,这是我目前写的。 这对我来说毫无意义 =IF(B2<>""&D2<>"",B2*D2,IF(B2<>""&D2=""&C2<>"",B2*C2,IF(A2<>""&C2<>""&AND(B2&D2=""),A2*C2,IF(A2<>""&C2=""&D2<>""&B2="",A2*D2,A2*C2)))) =I

我有一个计算专栏,这是我目前写的。 这对我来说毫无意义

=IF(B2<>""&D2<>"",B2*D2,IF(B2<>""&D2=""&C2<>"",B2*C2,IF(A2<>""&C2<>""&AND(B2&D2=""),A2*C2,IF(A2<>""&C2=""&D2<>""&B2="",A2*D2,A2*C2))))
=IF(B2''&D2'',B2*D2,IF(B2''&D2''&C2'',B2*C2,IF(A2''&C2''&AND(B2&D2''),A2*C2,IF(A2''&C2''&D2''&B2'',A2*D2,A2*C2)))
逻辑是如果B2和D2不为空,则乘以B2*D2

如果B2不为空且D2为空,则B2*c2

如果B2为空且D2不为空,则a2*D2

其他a2*c2

有什么方法可以让这个代码工作吗


谢谢

您应该使用
和()

=IF(和(B2“”,D2“”),B2*D2,IF(和(B2“”,D2=“”),B2*C2,IF(和(B2=“”,D2“”),A2*D2,A2*C2)))

您应该使用
和()

=IF(和(B2“”,D2“”),B2*D2,IF(和(B2“”,D2=“”),B2*C2,IF(和(B2=“”,D2“”),A2*D2,A2*C2)))

替代方法或重写公式:

=IF(AND(B2<>"",D2<>""),B2*D2,IF(D2="",IF(B2<>"",B2*C2,A2*C2),IF(D2<>"",A2*D2,A2*C2)))

=IF(AND(B2<>"",D2<>""),B2*D2,IF(AND(B2="",D2=""),A2*C2,IF(D2="",B2*C2,A2*D2)))
因此,减少了侧边跟踪和反点跟踪(不确定我需要扩展到多少!)

查看上表,您会注意到在黄色区域中,列出了所有可能的空白和非空白组合。如果随后以二进制数相同的方式为列赋值(注意a行),则可以开始生成所有可能的数字

我首先在E2:E5中生成我需要的列表,用于选择可以使用的数字。我认为0会击败CHOOSE并导致它失败。我知道
FALSE+FALSE=0
,我也知道
TRUE+TRUE=2
以及
TRUE+FALSE=1和FALSE+TRUE=1
。我需要一种方法来区分后两种,我知道我总共需要4个结果。这就是二进制计数/转换的时候,不管你想叫它什么。我把下面的公式放在D2中并抄下来

=SUM((A2<>"")*2+(B2<>""))
Note the brackets around the logic check and
that the logic checks are sent through a math
operation before being summed.    

technically speacking it is really:
=SUM((A2<>"")*2+(B2<>"")*1)

however the *1 is not needed
=SUM((A2“”)*2+(B2“”)
注意逻辑检查和检查周围的括号
逻辑检查是通过数学方法发送的
求和前的运算。
从技术上讲,它实际上是:
=总和((A2“)*2+(B2“)*1)
但是,不需要*1
一旦我生成了这个列表,它是一个简单的+1添加到它,进入E2:E5中看到的1到4的范围

现在我有了一种生成索引号的方法,唯一要做的就是将所需的结果/公式与正确的组合匹配起来

=CHOOSE(SUM((A2<>"")*2+(B2<>""))+1,"A","B","C","D")
=选择(和((A2“)*2+(B2“)+1,“A”、“B”、“C”、“D”)
好吧,我觉得我有点像是在打一匹死马,所以如果我解释过度,我道歉。如果仍有遗漏,请进一步解释

更新TID位 如果有更多的列要检查,可以通过简单地向列添加下一个二进制值并确保选择列表中有适当数量的结果来调整选择公式。应该有2^(#个要检查的列)选项

=选择(和((A2“”)*4+(A2“”)*2+(B2“”)+1,“A”、“B”、“C”、“D”、“E”、“F”、“G”、“H”)

哪种方法比多个嵌套IFs更简洁,但我认为嵌套IFs更容易理解。

替代方法或重写公式:

=IF(AND(B2<>"",D2<>""),B2*D2,IF(D2="",IF(B2<>"",B2*C2,A2*C2),IF(D2<>"",A2*D2,A2*C2)))

=IF(AND(B2<>"",D2<>""),B2*D2,IF(AND(B2="",D2=""),A2*C2,IF(D2="",B2*C2,A2*D2)))
因此,减少了侧边跟踪和反点跟踪(不确定我需要扩展到多少!)

查看上表,您会注意到在黄色区域中,列出了所有可能的空白和非空白组合。如果随后以二进制数相同的方式为列赋值(注意a行),则可以开始生成所有可能的数字

我首先在E2:E5中生成我需要的列表,用于选择可以使用的数字。我认为0会击败CHOOSE并导致它失败。我知道
FALSE+FALSE=0
,我也知道
TRUE+TRUE=2
以及
TRUE+FALSE=1和FALSE+TRUE=1
。我需要一种方法来区分后两种,我知道我总共需要4个结果。这就是二进制计数/转换的时候,不管你想叫它什么。我把下面的公式放在D2中并抄下来

=SUM((A2<>"")*2+(B2<>""))
Note the brackets around the logic check and
that the logic checks are sent through a math
operation before being summed.    

technically speacking it is really:
=SUM((A2<>"")*2+(B2<>"")*1)

however the *1 is not needed
=SUM((A2“”)*2+(B2“”)
注意逻辑检查和检查周围的括号
逻辑检查是通过数学方法发送的
求和前的运算。
从技术上讲,它实际上是:
=总和((A2“)*2+(B2“)*1)
但是,不需要*1
一旦我生成了这个列表,它是一个简单的+1添加到它,进入E2:E5中看到的1到4的范围

现在我有了一种生成索引号的方法,唯一要做的就是将所需的结果/公式与正确的组合匹配起来

=CHOOSE(SUM((A2<>"")*2+(B2<>""))+1,"A","B","C","D")
=选择(和((A2“)*2+(B2“)+1,“A”、“B”、“C”、“D”)
好吧,我觉得我有点像是在打一匹死马,所以如果我解释过度,我道歉。如果仍有遗漏,请进一步解释

更新TID位 如果有更多的列要检查,可以通过简单地向列添加下一个二进制值并确保选择列表中有适当数量的结果来调整选择公式。应该有2^(#个要检查的列)选项

=选择(和((A2“”)*4+(A2“”)*2+(B2“”)+1,“A”、“B”、“C”、“D”、“E”、“F”、“G”、“H”)

为了简洁起见,哪种类型的函数优于多个嵌套的IFs,但我认为嵌套的IFs更容易理解。

您似乎混合了来自其他编程语言的运算符:
在Excel中:

AND : binary operator : AND(TRUE, FALSE) => FALSE
&   : concatenation   : "Hello " & "World" => "Hello World"

您似乎混合了来自其他编程语言的运算符:
在Excel中:

AND : binary operator : AND(TRUE, FALSE) => FALSE
&   : concatenation   : "Hello " & "World" => "Hello World"

哇-你能在
CHOOSE()
公式上展开一点吗?这看起来很有趣,但我不太明白。@Brucewayn我的腰带不合适了。8) 哇。。。另外,我的鼠标按钮似乎不能让我给你1000张赞成票:(@BruceWayne否,但它可能会给你一个借口,当你的鼠标左键磨损时,你可以买一个新的鼠标。8pWhoah-你能在
CHOOSE()上扩展一点吗)
formula?看起来很有趣,但我不太明白。@Brucewayn我的腰带不合适了。哇。。。而且,似乎捣碎我的鼠标按钮实际上并没有让我给你1000张选票:(@BruceWayne no,