=ArrayFormula 使用 SumIf 函数在 Google 表格中的两个日期之间求和

Posted

技术标签:

【中文标题】=ArrayFormula 使用 SumIf 函数在 Google 表格中的两个日期之间求和【英文标题】:=ArrayFormula Using SumIf Function to Sum Between Two Dates in Google Sheets 【发布时间】:2022-01-17 12:39:54 【问题描述】:

我正在尝试创建一个函数,在使用 =arrayformula 函数迭代列结果时,将两个日期之间行驶的所有里程相加

下面是我的函数的语法:

'TempDataSet'!G2:G: 总和范围 具有总行驶里程

'TempDataSet'!C2:C:条件列,包含所有驱动日期

A7:开始日期

B7:结束日期

这是我在下面写的函数使用 sumifs 函数

=SUMIFS('TempDataSet'!$G$2:$G,'TempDataSet'!$C$2:$C,">="&A7,'TempDataSet'!$C$2:$C,"<="&B7)

此函数有效,但我想实现=arrayformula 函数,以便该函数可以自动向下拖动结果。

我知道**你不能在 =arrayformula 中使用 =sumifs,所以这就是我卡住的地方

=arrayformula 中使用=sumif 函数的方法是什么?

我也尝试过使用 =query 函数,但 =query 函数不支持 =arrayformula

【问题讨论】:

请给出一个最小的、可重现的例子***.com/help/minimal-reproducible-example 【参考方案1】:

使用 MMULT(如果数据在第 2 行和第 10 行之间)

=mmult(transpose(arrayformula(
IF((TempDataSet!$C$2:$C$10>=TRANSPOSE(A7:A))*(TempDataSet!$C$2:$C$10<=TRANSPOSE(B7:B)),
TempDataSet!$G$2:$G$10,0))),
sequence(rows(TempDataSet!$G$2:$G$10),1,1,0))

如果你限制了TempDataSet中的行数以避免长时间计算,你也可以使用

=mmult(transpose(arrayformula(
IF((TempDataSet!$C$2:$C>=TRANSPOSE(A7:A))*(TempDataSet!$C$2:$C<=TRANSPOSE(B7:B)),
value(TempDataSet!$G$2:$G),0))),
sequence(rows(TempDataSet!$G$2:$G),1,1,0))

说明

创建第一个条件矩阵

=arrayformula(IF((TempDataSet!$A$2:$A$10&gt;=TRANSPOSE(A2:A7))*(TempDataSet!$A$2:$A$10&lt;=TRANSPOSE(B2:B7)),TempDataSet!$B$2:$B$10,0))

创建一个1的序列:sequence(列数为1,行数等于我转置的矩阵的列数)

=sequence(rows(TempDataSet!$B$2:$B10),1,1,0)

最后申请 MMULT:MMULT

【讨论】:

这解决了问题!这是如何运作的?我以前从未使用过 MMULT、VALUE 或 SEQUENCE?我正在尝试了解 Google 表格中的数组。 我添加了一些解释,但我想你会在网上找到练习以更好地了解 mmult 的工作原理!【参考方案2】:

尝试:

=SUMPRODUCT(FILTER('TempDataSet'!G2:G; 'TempDataSet'!C2:C>A7; 'TempDataSet'!C2:C<=B7))

【讨论】:

以上是关于=ArrayFormula 使用 SumIf 函数在 Google 表格中的两个日期之间求和的主要内容,如果未能解决你的问题,请参考以下文章

ARRAYFORMULA 中的 Google 表格 AVERAGE 函数

如何将多个函数与ArrayFormula结合使用

EXCEL请详细说明sumif函数的用法

excel使用sumif求和后空白

Excel使用SUMIF函数注意事项

玩转Excel系列-SUMIF函数的使用