首页 > 解决方案 > 为什么与 Excel 中的单元格相比,If 语句的范围行为不同

问题描述

假设我想输出一个忽略“-”和“”单元格并返回任何其他内容的列。

=IF(OR(A2="",A2="-"),"",A2)并且向下拖动有效,但为什么不能将其应用于一系列值?

例如:

=IF(OR(A2:A11="",A2:A11="-"),"",A2:A11)只返回空白单元格。

同样: =IF(OR((A2:A11="")*(A2:A11=""),(A2:A11="-")*(A2:A11="-")),"",A2:A11)导致相同的结果。

谁能解释为什么会发生这种情况。

谢谢

标签: if-statementexcel-formula

解决方案


或接受数组并返回单个值

所以你可以这样做:

=OR(A2:A11="",A2:A11="-") 

如果范围内的任何一个为空,它将返回一个 TRUE,""如果没有一个为空,它将返回 FALSE。它不会像数组公式所需的那样返回 TRUE/FALSE 数组。

在此处输入图像描述

所以我们必须这样做:

=(A2:A11="")+(A2:A11="-") 

这将返回一个数字数组。在这种情况下,要么0要么1。所以这个数组将是一个由 10 个数字组成的一维数组。

在此处输入图像描述

然后当包含在 if 中时,它将数组与数组进行比较。

这就是为什么数组公式,包括新的动态数组公式 FILTER 不能与ORor一起使用,AND而必须分别使用+or *

因此,在您的情况下,它需要是:

=IF((A2:A11="")+(A2:A11="-"),"",A2:A11)

在此处输入图像描述


推荐阅读