【问题标题】:Google Sheets: How to combine Filter, Query, and MINIFSGoogle 表格:如何组合过滤器、查询和 MINIFS
【发布时间】:2021-11-07 08:58:46
【问题描述】:

编辑:Here 是一个带有虚拟数据的电子表格。

我正在处理会计数据,并试图提出一个这样的表格来计算我在即将到来的付款中必须支付的费用:

Price Quantity Total Value
0.50 600 300.00
0.10 1000 100.00

我的数据是价格和数量以及任意付款日期的表格。括号中的单元格地址

Price (N2) Quantity (O2) (P2) 1/1/2021 (Q2) 2/9/2021 (R2) 5/2/2021 (S2) 10/5/2021 (T2) 11/4/2021
0.25 100 25.00
0.70 2 1.40
0.50 500 250.00
0.10 1000 100.00
0.50 100 50.00

日期列中的值始终等于价格乘以数量,并且每一行只有一个日期列中的条目。 我想主动计算在未来最快的付款日期需要支付多少。因此,例如,由于今天是 9 月 10 日,因此它将是 2021 年 10 月 5 日的金额。

到目前为止我所做的尝试:

要进行最终计算,请使用如下查询:

=QUERY(table_from_filter,"select Price , sum(Quantity), Price*SUM(Quantity) group by Price ")

为了获取上述查询的值,我使用这样的过滤器语句来过滤掉不在 2021 年 10 月 5 日的列中的价格和数量(S 列):

=filter(P2:T2,S2:S <> " ")

我还能够使用此公式获得 2021 年 10 月 5 日的值

=MINIFS(O2:T2,O2:T2,">"&TODAY())

如何组合/调整所有三个公式,以获得仅针对即将到来的最早日期的付款所需的结果表,而无需对列字母进行硬编码?

【问题讨论】:

  • 每个人都可以更轻松地共享电子表格
  • 添加到开头!

标签: google-sheets google-sheets-formula


【解决方案1】:

使用大括号{A:E} 然后使用Col1,Col2,Colx 并用L5中的结果替换x,所以试试

=query({A:E},"select Col1,Col2,Col"&L5&" where Col"&L5&"<>' ' ")

在 L5 中

=match(MINIFS(C2:E2,C2:E2,">"&TODAY()),A2:E2,0)

【讨论】:

  • 谢谢!有没有办法像我在单元格 F4 中的示例那样按价格对结果进行分组?我尝试添加 GROUP BY Col2 但它不起作用
  • =query({A4:E},"select Col2,sum(Col1),Col2*sum(Col1) where Col"&amp;L5&amp;"&lt;&gt;' ' group by Col2 offset 1")
【解决方案2】:

建议的解决方案

=QUERY(
    {
        A2:B14,
        FILTER(
            C2:E14,
            C2:E2 = MIN(
                ARRAYFORMULA(
                    FILTER(C2:E2, C2:E2 - TODAY() > 0) - TODAY()
                )
            ) + TODAY()
        )
    },
"select Col1, Col2, Col3 where Col3 is not null")

在这里玩一下:

https://docs.google.com/spreadsheets/d/1n3ZOyKiH9p2nref6TbsVKkKQsxBzoxasNlflpa4Hq8s/edit?usp=sharing

我将其复制到一个新文档中,因为您在一些空白单元格中插入了空格,这些空格阻止了 is not null 工作,并且删除这些空格似乎会弄乱您的公式。

我将您的“约会查找器”更改为:

MIN(
    ARRAYFORMULA(
        FILTER(C2:E2, C2:E2 - TODAY() > 0) - TODAY()
    )
) + TODAY()

首先使用ARRAYFORMULA从日期中减去TODAY(),如果有任何负值则FILTER它们。然后取MIN 并再次添加TODAY() 以获取日期。

有了这个我创建了一个数组来使用QUERY

{
    A2:B14,
    FILTER(
        C2:E14,
        C2:E2 = MIN(
            ARRAYFORMULA(
                FILTER(C2:E2, C2:E2 - TODAY() > 0) - TODAY()
            )
        ) + TODAY()
    )
}

从那里,我使用QUERY 过滤掉空白的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-02
    • 1970-01-01
    • 2020-01-28
    • 2020-10-01
    相关资源
    最近更新 更多