和()和或()的Excel惰性计算

和()和或()的Excel惰性计算,excel,lazy-evaluation,Excel,Lazy Evaluation,Excel似乎没有对AND()和OR()函数使用惰性求值。例如: =AND(A1<>0, B1/A1>.5) =和(A10,B1/A1>.5) 将导致值#DIV/0!。一种替代方法是使用if语句: =IF(A1<>0, B1/A1>.5, FALSE) =IF(A10,B1/A1>.5,FALSE) 但是,如果AND函数计划在if函数(或某些嵌套的IFs)中使用,则这会变得很混乱。是否有更好的(即更具可读性的)解决方案?不要认为你能做得比你现有的更好。

Excel似乎没有对AND()和OR()函数使用惰性求值。例如:

=AND(A1<>0, B1/A1>.5)
=和(A10,B1/A1>.5)
将导致值#DIV/0!。一种替代方法是使用if语句:

=IF(A1<>0, B1/A1>.5, FALSE)
=IF(A10,B1/A1>.5,FALSE)

但是,如果AND函数计划在if函数(或某些嵌套的IFs)中使用,则这会变得很混乱。是否有更好的(即更具可读性的)解决方案?

不要认为你能做得比你现有的更好。以下是一些其他选择:

=IF(A1,B1/A1>.5) 
=IFERROR(B1/A1>.5,FALSE)
=COUNT(N(A1<>0),N(B1/A1>.5))=2
=IF(A1,B1/A1>.5)
=错误(B1/A1>0.5,错误)
=计数(N(A10),N(B1/A1>0.5))=2

虽然它更长,但最后一个可以扩展到更多的条件,并且很容易修改为或通过将
=2
更改为
>0

我还没有发现更简单的方法:)