![平均值如果基于某一列中的一个标准或另一个标准](https://linux22.com/image/1544151/%E5%B9%B3%E5%9D%87%E5%80%BC%E5%A6%82%E6%9E%9C%E5%9F%BA%E4%BA%8E%E6%9F%90%E4%B8%80%E5%88%97%E4%B8%AD%E7%9A%84%E4%B8%80%E4%B8%AA%E6%A0%87%E5%87%86%E6%88%96%E5%8F%A6%E4%B8%80%E4%B8%AA%E6%A0%87%E5%87%86.png)
有人能解释一下为什么这不起作用吗?
=AVERAGEIF(Data!C:C,{"Monday","Tuesday"},Data!L:L)
我想要 L 列的平均值,其中 C 列中有星期一或星期二。它仅给出星期一的平均结果。
答案1
我可以提供一种使用 AVERAGE 和 IF 作为数组公式的替代方法。
它不起作用的最可能原因是因为你向它传递了一个数组 {“Monday”,“Tuesday”},但该函数本身并不作为数组公式运行,导致只处理数组的第一个元素,即“Monday”
例如尝试这个=ROW(A1:A4)
这应该返回 1,2,3,4,但它返回 1,因为它不是数组公式。将其转换为数组公式仍返回 1,即第一个元素,因为没有任何内容可以处理数组。现在将其包装在 SUM 中,=SUM(ROW(A1:A4))
然后从公式栏中按 CTRL+SHIFT+ENTER 将其转换为数组公式。现在它正确返回 10,与 =SUM(1,2,3,4)
您还应避免使用平均值的平均值,因为它可能会导致错误的结果。例如,平均值(1,2,3)与平均值(平均值(1,2),平均值(3))不同
使用此数组公式来获得所需的结果。
=AVERAGE(IF(Data!C:C={"Monday","Tuesday"},Data!L:L))
在公式栏中按 CTRL + SHIFT + ENTER 将此公式转换为数组公式。公式现在应将其自身括在花括号中。
如果没有数组公式,这将导致错误的结果。
答案2
您的AVERAGEIF
函数返回一个数组。然后您需要对结果数组求平均值:
=AVERAGE(AVERAGEIF(Data!C:C,{"Monday","Tuesday"},Data!L:L))
但是,除非周一和周二的条目数完全相同,否则这实际上并不能提供周一或周二所有条目的平均值。换句话说,它是周一、周二平均值的平均值
如果星期一和星期二的条目数量不同,并且您希望将其计入平均值,则需要执行以下操作(未经测试)
=SUM(SUMIF(数据!C:C,{"星期一","星期二"},数据!L:L))/SUM(COUNTIF(数据!C:C,{"星期一","星期二"}))