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")