首页 > 解决方案 > 为什么使用命名范围时 AND 函数会将结果折叠为单个值?

问题描述

问题

我在我的工作簿中广泛使用命名范围,但现在发现在AND函数的情况下它们并不是常规范围的简单替代品。在这种情况下,公式不再“溢出”到后续行,并且只计算 1 个值。我该如何解决这种行为?

虚拟数据

这是我的虚拟数据:

colu1 colu2
3 0
0 2
1 9
2 1

尝试

成功使用单一条件

我想检查两者colu1是否colu2不等于零。为单个列检查此项按预期工作。

左侧的公式(公式“溢出”自身,我不必向下拖动),右侧的结果:

colu1<>0? colu2<>0? colu1<>0? colu2<>0?
=IF(colu1<>0, 1, 0) =IF(colu2<>0, 1, 0) →</td> 1 0
(溢出) (溢出) →</td> 0 1
(溢出) (溢出) →</td> 1 1
(溢出) (溢出) →</td> 1 1

使用多个条件时失败

在公式中同时检查两列AND失败:

左边的公式(在这种情况下,公式不再“溢出”),右边的结果:

两个<>0? 两个<>0?
=IF(AND(colu1<>0, colu2<>0), 1, 0) →</td> 0
(无泄漏) →</td> (空的)
(无泄漏) →</td> (空的)
(无泄漏) →</td> (空的)

标签: excelif-statementexcel-formulaoffice365spill-range

解决方案


AND 接受数组输入并输出奇异结果而不是数组。而是使用*

=IF((colu1<>0)*(colu2<>0), 1, 0)

在此处输入图像描述

或者,如果您有 Excel 2013 或更高版本,您可以使用 BITAND():

=IF(BITAND(colu1<>0,colu2<>0),1,0)

但请注意,BITAND 需要两个且仅两个参数,并且不会与更多参数一起使用。它适用于这种情况,因为我们基本上是在比较 1 和 0。这不是在数组公式中使用 AND 的灵丹妙药。因此最好的方法仍然是布尔值的乘法。

在此处输入图像描述


推荐阅读