谷歌表格 SUMIFS 将一列与另一列进行比较



我想知道是否有办法在 SUMIF 或 SUMIFS 函数或 DSUM 函数中使用列比较。具体来说,我想将一行中的一个值与同一行数据中的另一个值进行比较。

例如,假设我有以下数据表:

日期 1 | 日期 2 | 赚的钱
1/2/22 | 22-1-5 | $23.00
22-1-5 | 22-1-3 | $11.00

我想编写一个公式,如果日期 1 是上周并且日期 2 晚于或等于日期 1,则对第 3 列中的值求和。

我已经完成了一个包含 2 个隐藏列的解决方法解决方案,如下所示:
上周--> =IF(EQ(WEEKNUM(TODAY()) - WEEKNUM(A2), 1), "YES", "NO")日期 2 之后的日期 1--> =IF(B2>=A2, "YES", "NO")

然后我使用:
=SUMIFS(C2:C3,D2:D3,"YES",E2:E3,"YES")

这一切都有效,但我正在尝试学习以更干净的方式执行此操作,而无需有人可能会移动或删除隐藏列。

我能找到的所有 SUM 或 SUMIF 示例都依赖于将标准与公式中硬编码的奇异值或单个单元格的值进行比较。我想直接比较每行从第 1 列到第 2 列的数据。这些公式或 Google 表格中的任何公式是否可能做到这一点?

为了检查日期是否为"上周",您需要考虑当前一周可能是一年中的第一个星期。因此,与其将今天的 WEEKNUM 与其他日期的 WEEKNUM 进行比较,不如将其与 7 天前的 WEEKNUM 进行比较。

其次,您可以使用 TRUE/FALSE 值并消除编写 IF 语句的需要,而不是使用"YES"或"NO",如下所示:

  • 上周:=(WEEKNUM(TODAY()-7)=WEEKNUM(A2))
  • 日期 2 之后
  • 的日期 1:B2>=A2

从那里,虽然可以为 SUMIFS 或 QUERY 构建数组公式,但更容易过滤表并对 C 列的结果求和:

=SUM(FILTER(C2:C,WEEKNUM(TODAY()-7)=WEEKNUM(A2:A),B2:B>A2:A))

最新更新