这是我的数据
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并且错误地完成了输入而没有得到错误并且用我得到的东西跑了。
答案 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)
返回FALSE
,FALSE
的平均值为0
。
您可以使用不需要输入数组的函数AVERAGEIF
来工作,但假设您有Excel 2007或更高版本:
=AVERAGEIF(A2:A5,"East",B2:B5)
如果您不想使用数组函数并且在2007之前使用excel版本,例如Excel 2003,您可以尝试:
=SUMIF(A2:A5,"East",B2:B5)/COUNTIF(A2:A5,"East")