Excel 中的 AVERAGEIF 返回 #VALUE

Excel 中的 AVERAGEIF 返回 #VALUE

我在单元格 A1:A10 中有一些数字数据。在 B2 中,我尝试获取 A1:A10(A2、A4、A6..)中偶数单元格的平均值,这样如果单元格为 0,则应排除数据点。

因此我使用 AVERAGEIF 公式以及 IF 语句来返回预期的单元格,否则为 0。

B2 中的公式是(这是一个数组公式,我确实按下了 ctrl shift enter 来获取数组公式)

{=AVERAGEIF(IF(MOD(ROW(A1:A10),2)=0,A1:A10,0),"<>0")}

此公式返回 #VALUE!,但我不明白原因。我尝试对其进行评估,直到倒数第二阶段,一切看起来都很好,但在最后一步计算时,它只返回 #VALUE!。

有人能进一步帮助我解释为什么这个公式返回#VALUE!吗?谢谢。

在此处输入图片描述

进一步更新

我进一步检查了该公式在 LibreOffice Calc 和 Google Sheets 中是否都能正常工作。在 Google Sheets 中,它会在 CSE 上自动放入 ArrayFunction 公式中。

在此处输入图片描述

在此处输入图片描述

此外,我发现 Excel 2013 的 AVERAGEIF 脱机帮助确实提到了它接受数组输入的事实。以下是帮助摘录。

AVERAGEIF 函数语法具有以下参数(参数:向动作、事件、方法、属性、函数或过程提供信息的值。):

范围必填。要计算平均值的一个或多个单元格,包括数字或名称、数组或包含数字的引用。

条件必需。条件以数字、表达式、单元格引用或文本的形式表示,用于定义要计算平均值的单元格。例如,条件可以表示为 32、“32”、“>32”、“apples”或 B4。

Average_range 可选。要求平均值的实际单元格集。如果省略,则使用范围。

对我来说,很难判断这是设计行为还是 MS Excel 中缺少某种功能的错误。

答案1

并非所有函数都可以在数组公式中使用,AVERAGIF已经以类似的方式工作,可能在数组公式中不起作用。

您可以使用这个:

{=AVERAGE(IF((MOD(ROW(A1:A10),2)=0)*(A1:A10<>0),A1:A10,""))}

与原始公式相比的修改:

  • AVERAGEIF->AVERAGE
  • 0(作为的第三个参数IF)-> ""AVERAGE忽略文本)
  • 将两个标准合并为IF
    (MOD(ROW(A1:A10),2)=0)*(A1:A10<>0)
    • 注意:不要在数组公式中使用AND和,OR因为它们不能按预期工作,请改用*+

在此处输入图片描述

相关内容