我的电子表格中有一个平均函数运行良好:=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。