如何在 ARRAYFORMULA 中使用 AVERAGEIFS
How to use AVERAGEIFS within ARRAYFORMULA
我正在尝试在 ARRAYFORMULA
中使用 AVERAGEIFS
。查看其他问题,我得出的结论是不使用QUERY
函数是不可能的。
我的目的是对共享相同 ID 的列的值进行平均。
我认为 非常接近我的需要,但我无法自己复制和调整其解决方案 sheet。
In this sheet I show the result I expect (I got it by dragging the formula). I've also reviewed the Query Language Reference,未成功。
非常感谢您的时间和精力。
所以公式应该是
=ArrayFormula(iferror(sumif(A2:A,A2:A,B2:B)/countif(A2:A,A2:A)))
请注意,如果点列中有任何文本值,这仍然是 return 结果(因为计数会大于零)- 您可以改用
=ArrayFormula(if(isnumber(B2:B),(sumif(A2:A,A2:A,B2:B)/countif(A2:A,A2:A)),""))
如果对于任何 ID,混合了包含文本的行和包含数字的行,这将 return 比 avg 或 average 公式更小的结果。这是此方法的局限性。您不能在其中添加额外条件(B 列必须包含一个数字),因为您需要 countifs,而 countifs 不是数组友好的。似乎仍然很奇怪,AFAIK countif 和 sumif 是这个家族中唯一对数组友好的函数,而 countifs、sumifs、averageif 等不是。
你可以做到:
=ARRAYFORMULA(IFERROR(VLOOKUP(A2:A; QUERY(A2:B; "select A,avg(B) group by A"); 2; )))
我正在尝试在 ARRAYFORMULA
中使用 AVERAGEIFS
。查看其他问题,我得出的结论是不使用QUERY
函数是不可能的。
我的目的是对共享相同 ID 的列的值进行平均。
我认为
In this sheet I show the result I expect (I got it by dragging the formula). I've also reviewed the Query Language Reference,未成功。
非常感谢您的时间和精力。
所以公式应该是
=ArrayFormula(iferror(sumif(A2:A,A2:A,B2:B)/countif(A2:A,A2:A)))
请注意,如果点列中有任何文本值,这仍然是 return 结果(因为计数会大于零)- 您可以改用
=ArrayFormula(if(isnumber(B2:B),(sumif(A2:A,A2:A,B2:B)/countif(A2:A,A2:A)),""))
如果对于任何 ID,混合了包含文本的行和包含数字的行,这将 return 比 avg 或 average 公式更小的结果。这是此方法的局限性。您不能在其中添加额外条件(B 列必须包含一个数字),因为您需要 countifs,而 countifs 不是数组友好的。似乎仍然很奇怪,AFAIK countif 和 sumif 是这个家族中唯一对数组友好的函数,而 countifs、sumifs、averageif 等不是。
你可以做到:
=ARRAYFORMULA(IFERROR(VLOOKUP(A2:A; QUERY(A2:B; "select A,avg(B) group by A"); 2; )))