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正在读第一行..但是然后奇怪发生平均(如果())

我有一个/两个问题和一个祈祷:

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

祷告:我只希望在过去的几个星期里,我没有产生大量的垃圾,当时我忽略了CTRL-SHIFT-ENTER,错误地完成了回车,没有得到任何的错误,并用我所得到的来运行。

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)

与其他function相同:

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

返回FALSE ,并且FALSE平均值为0

你可以使用函数AVERAGEIF ,它不需要数组input来工作,但这是假设你有Excel 2007或更高版本:

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

如果你不想使用一个数组函数并且在2007年之前停留在Excel版本中,例如Excel 2003,你可以尝试:

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