=ArrayFormula 使用 SumIf 函数对 Google 工作表中的两个日期求和

=ArrayFormula Using SumIf Function to Sum Between Two Dates in Google Sheets

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

下面是我的函数的语法:

'TempDataSet'!G2:G:行驶里程总和

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

A7:开始日期

B7:结束日期

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

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

这个函数有效,但是我想实现=arrayformula函数,这样函数就可以自动向下拖动结果。

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

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

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

尝试:

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

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

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

如果限制TempDataSet的行数避免长计算,也可以使用

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

说明

  • 创建第一个条件矩阵

    =arrayformula(IF((TempDataSet!$A:$A>=TRANSPOSE(A2:A7))*(TempDataSet!$A:$A<=TRANSPOSE(B2:B7)),TempDataSet!$B:$B,0))

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

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

  • 最终应用 MMULT:MMULT