【问题标题】:=ArrayFormula Using SumIf Function to Sum Between Two Dates in Google Sheets=ArrayFormula 使用 SumIf 函数在 Google 表格中的两个日期之间求和
【发布时间】: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

【问题讨论】:

标签: google-sheets google-sheets-formula array-formulas sumifs


【解决方案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))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-17
    • 2017-11-12
    • 1970-01-01
    • 2022-08-21
    • 2023-03-07
    • 2018-10-20
    • 2018-03-16
    相关资源
    最近更新 更多