用IF语句检查值

非常简单的问题。 我有四列。 如果列1中的值为假OR 0或N / A,那么我想检查列2.如果列2中的值为假OR 0或N / A,那么我想检查列3。第3列是False OR 0或N / A,那么我要在第4列打印数值。我拥有的公式如下:

=IF(NOT(OR(ISNA(BJ2),BJ2=FALSE,BJ2=0)),BJ2, IF(NOT(OR(ISNA(BK2),BK2=FALSE,BK2=0)),BK2, IF(NOT(OR(ISNA(BL2),BL2=FALSE,BL2=0)),BL2,BM2))) 

所以BJ是第1列,BK第2列,第3列,第4列。该公式适用于False和0错误,但是当我添加ISNA部分时,它就会崩溃。 事实上,它根本就没有做任何事情。

列中的数据是string,FALSE(不是string)或#N / A作为值不可用的错误。 我用ISNA检查了一个N / A值,结果是True。 因此OR语句应该返回为TRUE,然后通过否定而成为false。 因此If语句应该跳到下一列。

什么导致这不读?

问题是,如果BJ2碰巧是N/A ,那么expression式比如说BJ2=FALSE或者BJ2=0将被评估为N/A 所以,如果发生这种情况, OR函数将用N/A来回答,因为OR()计算它的所有参数! (不知道为什么)。