ArrayFormula 仅在整个列中迭代第一个值,需要所有符合条件的值

Posted

技术标签:

【中文标题】ArrayFormula 仅在整个列中迭代第一个值,需要所有符合条件的值【英文标题】:ArrayFormula Only Iterating The First Value Throughout the Column, Need All the Values that Fit the Criteria 【发布时间】:2022-01-09 12:16:49 【问题描述】:

问题:

我有两张床单, 汽车费用和业务费用(具有不同费用类别的重复工作表) J栏代表费用的成本 F列代表费用的日期

我正在尝试创建一个函数,该函数将在给定开始日期和结束日期的情况下将两张表之间的所有费用相加并向下迭代列

这是我写的函数:

=ArrayFormula(if(isblank(F2:F),"",SUMIFS('Auto Expenses'!$J$7:$J,'Auto Expenses'!$F$7:$F,">="&O2:O,'Auto Expenses'!$F$7:$F,"<="&P2:P)+SUMIFS('Business Expenses'!$J$7:$J,'Business Expenses'!$F$7:$F,">="&O2:O,'Business Expenses'!$F$7:$F, "<="&P2:P)))

O2:O开始日期列表 & P2:P结束日期列表 >

当我运行该函数时,它只会返回费用的第一个总和,并以相同的值一直向下迭代。

我做错了什么?

如果我改用这个函数并且向下拖动,它会给出正确的结果,但我希望它自动向下迭代列

=SUMIFS('Auto Expenses'!$J$7:$J,'Auto Expenses'!$F$7:$F,">="&O2,'Auto Expenses'!$F$7:$F, "<="&P2)+SUMIFS('Business Expenses'!$J$7:$J,'Business Expenses'!$F$7:$F,">="&O2,'Business Expenses'!$F$7:$F, "<="&P2)

这里是电子表格副本的链接以供参考:https://docs.google.com/spreadsheets/d/1Lbrvsrz90RSYhedwA8IkyoYlHqWy5Lw7Ngxw5eRjAKs/edit?usp=sharing[enter 此处的图片描述][1]

【问题讨论】:

SUMIFS 不受 ARRAYFORMULA 支持。 无法通过链接访问工作表 - 请使其可共享 @TomSharpe 我现在已授予对电子表格的访问权限。您应该能够查看和编辑 @idfurw 哦,我忘记了 arrayformula 不支持 sumifs。那么我是否必须为每个条件做一个 sumif 并将它们加在一起? 【参考方案1】:

由于您的时间间隔都是 7 天,一种方法是开发一个包含 7 列的二维数组,其中每列代表一周中的不同日期,并在 sumif 中使用它来获取每天的总数。然后使用 Mmult 对 7 天求和:

=ArrayFormula(if(O2:O="",,mmult(sumif('Auto Expenses'!F7:F,O2:O+sequence(1,7,0),'Auto Expenses'!J7:J),sequence(7,1,1,0))))

然后对业务费用执行相同的操作(您的样本表中尚未填充)。

【讨论】:

哇,我什至不知道 =SEQUENCE 是我可以使用的函数!我是学习 Google Sheets/Excel 数组的新手,所以这对了解很有帮助。谢谢

以上是关于ArrayFormula 仅在整个列中迭代第一个值,需要所有符合条件的值的主要内容,如果未能解决你的问题,请参考以下文章

谷歌表格使用 arrayFormula 和间接通过地址读取单元格值

在Google工作表的单个列中的每个单元格中显示今天的日期

Google表格中ARRAYFORMULA内的动态数据CONCATENATE

Arrayformula 返回多行中的最后一个非空单元格

行中第一个非空白单元格作为列的数组

Google 表格 - Arrayformula 查询拆分调试