【问题标题】:How to use AVERAGEIFS within ARRAYFORMULA如何在 ARRAYFORMULA 中使用 AVERAGEIFS
【发布时间】:2019-10-24 13:37:24
【问题描述】:

我正在尝试在ARRAYFORMULA 中使用AVERAGEIFS。看看其他问题,我得出的结论是,不使用QUERY函数是不可能的。

我的目的是在共享相同 ID 时对列的值进行平均。

我认为this question 非常接近我的需要,但我无法在我自己的工作表上复制和调整它的解决方案。

In this sheet我显示了我期望的结果(我通过拖动公式得到它)。我也审核了Query Language Reference,没有成功。

非常感谢您的时间和精力。

【问题讨论】:

  • 大约。你有多少行数据??
  • 超过 50.000...
  • 在您的工作表中,它仅从当前行开始计算当前 ID 的平均值(因此 2019_1_JOHN 从 16.7 变为 22.5 再到 25) - 你能确认这就是你正在寻找的东西吗?
  • Tom 是对的,这是创建虚拟数据的错误,现在已修复。对不起……
  • 所以据我所知,你不能用 averageif 做到这一点,但可以用 sumif/countif 做到这一点

标签: google-sheets average google-sheets-formula array-formulas google-sheets-query


【解决方案1】:

所以公式应该是

=ArrayFormula(iferror(sumif(A2:A,A2:A,B2:B)/countif(A2:A,A2:A)))

请注意,如果 points 列中有任何文本值,这仍会返回结果(因为 count 会大于零) - 您可以改为使用

=ArrayFormula(if(isnumber(B2:B),(sumif(A2:A,A2:A,B2:B)/countif(A2:A,A2:A)),""))

如果您在任何 ID 中混合了带有文本的行和带有数字的行,则返回的结果将小于 avg 或 average 公式。这是此方法的限制。您不能在(B 列必须包含一个数字)中添加额外的条件,因为您需要 countifs 并且 countifs 不是数组友好的。 AFAIK countif 和 sumif 是这个系列中唯一对数组友好的函数,而 countifs、sumifs、averageif 等则不是。

【讨论】:

    【解决方案2】:

    你可以这样做:

    =ARRAYFORMULA(IFERROR(VLOOKUP(A2:A; QUERY(A2:B; "select A,avg(B) group by A"); 2; )))
    

    【讨论】:

    • 非常感谢!你的答案和汤姆的答案都对我很有效。我给了你赞成票,但似乎我没有足够的声誉来展示。无论如何,再次感谢您的宝贵时间。
    猜你喜欢
    • 1970-01-01
    • 2020-12-08
    • 2023-03-21
    • 1970-01-01
    • 2015-07-05
    • 1970-01-01
    • 1970-01-01
    • 2020-04-10
    • 1970-01-01
    相关资源
    最近更新 更多