为什么在缩小一个正常工作的Average函数的范围时会出现#n/a错误



我的电子表格中有一个平均函数运行良好:=AVERAGE( IF('Sheet2'!$2:$2="Tuesday", IF('Sheet2'!7:7<>"", 'Sheet2'!7:7)))

我不想在平均计算中使用所有的第7行,而是想只在小范围内工作,所以我把公式改为:=AVERAGE( IF('Sheet2'!$2:$2="Tuesday", IF('Sheet2'!B7:Y7<>"", 'Sheet2'!B7:Y7)))

当我进行此更改时,我的公式返回#n/a错误。在'Sheet2'!B7:Y7范围内没有#n/a。

是什么原因导致了这个错误?

试试这个:=AVERAGE( IF('Sheet2'!$B2:$Y2="Tuesday", IF('Sheet2'!$B$7:$Y$7<>"", 'Sheet2'!$B$7:$Y$7)))

由于这是一个数组公式,请确保在键入后按Ctrl+Shift+Enter

当数组的大小对应时,Excel最适合使用数组公式。原始公式在每个节处理整行,因此,如果只想处理某个节,请编辑整个公式,使其在数组公式的每个阶段处理相同数量的单元格。

这样想吧,它所做的是在第2行运行一个IF测试。对于argument,我们假设有30列,所以它运行30个测试。对于这些测试中的每一个,它都会运行sub-if测试,并最终返回30个值,这些值被发送到average函数。

如果您使用的是Excel 2007或更高版本,则有一个内置的单个函数AVERAGEIF。这对你来说可能更容易,它不需要CTRL+SHIFT+ENTER,也不需要检查空白范围(AVERAGEIF无论如何都会忽略这些),所以你可以使用这个公式

=AVERAGEIF(Sheet2!$B2:$Y2,"Tuesday",Sheet2!$B7:$Y7)

我建议您将IF语句的组件分解为单独的单元格,并查看它们的计算结果如何为True或False。

我认为你的问题在语句IF('Sheet2'!$2:$2="Tuesday",…)-据我所见,'Sheet2]$2:$2定义了一行单元格,而不是一个可能等于"星期二"的值。

尝试="Sheet2"$一个$2="Tuesday"作为您的第一个测试,在一个单独的单元格中。如果单元格Sheet2!A2确实是"星期二",那么这个公式将被评估为True。

最新更新