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

ArrayFormula Only Iterating The First Value Throughout the Column, Need All the Values that Fit the Criteria

问题:

我有两张纸, 汽车费用和业务费用(具有不同费用类别的重复表) J 列表示费用的成本 F 列表示费用的日期

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

下面是我写的函数:

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

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

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

我做错了什么?

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

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

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

由于您的时间间隔都是 7 天,因此一种方法是开发一个包含 7 列的二维数组,其中每列代表一周中的不同日期,并在求和中使用它来获取每一天的总数。然后使用 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))))

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