【问题标题】:Google sheets Average function is not calculating correctly谷歌表平均函数计算不正确
【发布时间】:2020-01-02 19:22:26
【问题描述】:

我正在使用 Google 表格创建财务记录。

我要做的是创建一个公式,将我的数据范围内的 3 列考虑在内。三列是日期、单词和数字。

公式的第一部分将检查日期是否为当前月份(不是在 30 天内,而是当前月份)。第二部分将检查第二列中是否存在单词“是”,如果这两个是真的,那么它将对所有其他也完全正确的行取第 3 列的平均值。

C 列是日期 W 列是单词 Y 列是数字

我尝试了多种方法,第一种是使用平均 IF 函数,我使用过滤器检查日期,然后在条件中使用“是”字样。这导致了一个数字,尽管它是不正确的,因为公式首先收集了是和否的序列,一旦它具有将它应用到第三列的序列,但它从我最早的条目(不是我当前的月份)开始。此代码如下。

所以或者我尝试了另一种方法。这是使用查询功能。尽管我坚持如何将日期的月份与当前的今天()月份进行比较。这没有结果,即使当前月份是 8,日期月份也是 8。我还在下面输入了这段代码。

=AVERAGEIF(filter(W8:W800,month(C8:C800)=month(today())),"Yes",Y8:Y800)

=query(query(A8:Z800,"select month(C)+1, W, Y where W ='Yes'",0),"select Col1, Col3, Col4 where Col1 ='"&month(today())&"'",1)

结果在后台解释

【问题讨论】:

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


    【解决方案1】:

    你的嵌套有点不对劲。如果您使用的是FILTER,请使用普通的AVERAGE 而不是AVERAGEIF,并确保您抓取了正确的列进行聚合。最后,不要忘记包裹IFERROR 来处理你的空箱子。

    =IFERROR(AVERAGE(FILTER(Y8:Y800, MONTH(C8:C800)=MONTH(TODAY()), W8:W800="Yes")), 0)
    

    【讨论】:

    • 我需要考虑一下 iferror 它所扮演的角色,但这非常有效。谢谢你,凯特:)
    • @bart.s IFERROR 返回第一个参数的结果,除非该结果是错误的。如果是,则返回第二个参数(在本例中为 0)。
    【解决方案2】:

    如果您有多个条件,则需要使用AVERAGEIFS 而不是AVERAGEIF

    =ARRAYFORMULA(AVERAGEIFS(C2:C, B2:B, "yes", MONTH(A2:A), MONTH(TODAY())))
    

    【讨论】:

    • 哦,美女,我也尝试过averageifs,但我的思路太短了(已经很晚了),我无法将它串起来并想“不,这可以”不要这样”。
    猜你喜欢
    • 1970-01-01
    • 2019-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-26
    • 1970-01-01
    • 2021-02-14
    相关资源
    最近更新 更多