Excel不正确的数组公式用法说明

时间:2014-01-14 15:22:48

标签: arrays excel

这是我的数据

Region    Value
East       9800
East       5592
East       6966
West       5418

当我这样做时

=AVERAGE(IF(A2:A5="East",B2:B5)) CTRL+SHIFT+ENTER

我得到了

7452.667

哪个是正确的答案。但是当我做的时候

    =AVERAGE(IF(A2:A5="East",B2:B5))  ENTER

我没有收到错误。我得到了

6944

如果我只是输入

 =IF(A2:A5="East",B2:B5)   ENTER

我得到了

 9800

所以6944不是9800的平均值.Excel在这做什么?

当我这样做时

=IF(A2:A5="West",B2:B5)  ENTER

我得到了

 FALSE

所以看起来IF正在读取第一行......但是接下来发生了一些奇怪的事情(If())

我有一两个问题和一个祷告:

问题:到达6944时,excel做了什么?当我使用ENTER而不是CTRL + SHIFT + ENTER时,为什么我没有收到错误?有没有办法提醒excel告诉我在处理数组时做正确的事情?

祷告:我只能希望在过去的几周里我没有产生大量的垃圾,因为我忽略了CTRL-SHIFT-ENTER并且错误地完成了输入而没有得到错误并且用我得到的东西跑了。

1 个答案:

答案 0 :(得分:5)

6944是所有值的平均值。您也可以使用=SUM(B2:B5)/4获取它。

如果您不使用CSE,IF将评估如下:

=IF(A2="East",B2:B5)

如果在excel中的非数组公式中有数组,则只能获得该数组的一个术语(或元素)。例如,如果您放置上面的公式(没有AVERAGE),IF将评估与插入公式的行对应的单元格。如果您放置,则实际的“结果”公式将如下所示它在excel的第二行(在任何单元格C2,D2,E2等中):

=IF(A2="East", B2)

如果将它放在C3单元格中会发生什么:

=IF(A3="East", B3)

如果你把它放在C6中...... A2:A5会返回#VALUE!,因为A2:A5中相应的6行不存在!当然,在C5中,您会得到=IF(A5="East", B5),它会返回FALSE样本值。

从初始公式开始,由于A2确实是East,因此您会得到AVERAGE(B2:B5)的结果。

与其他功能相同:

=IF(A2="West",B2:B5)

返回FALSEFALSE的平均值为0

您可以使用不需要输入数组的函数AVERAGEIF来工作,但假设您有Excel 2007或更高版本:

=AVERAGEIF(A2:A5,"East",B2:B5)

如果您不想使用数组函数并且在2007之前使用excel版本,例如Excel 2003,您可以尝试:

=SUMIF(A2:A5,"East",B2:B5)/COUNTIF(A2:A5,"East")