=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))
我正在尝试创建一个函数,该函数将两个日期之间的所有行驶里程相加,同时使用 =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))