我想将一个已经是 arrayformula 的公式应用于整列

I want to apply, to a whole column, a formula that is already an arrayformula

我有一个分类帐,其中按日期、类别和金额列出了一堆费用。 Expenses ledger

另外,我有一个针对“天然气”类别的分析 sheet。我希望分析 sheet 能够逐月显示 Gas 总支出,而无需更新分类帐以外的任何内容。 我可以用这个公式得到一个独特月份的列表:
=UNIQUE(ARRAYFORMULA(DATE(YEAR('Main Ledger'!A2:A), MONTH('Main Ledger'!A2:A), 1)))
这会按照我想要的方式填充月份,并且列表会随着分类帐自动增长。我把这些放在 A 列中。

对于每个月,我想将分类帐中的每个条目与 A 列中的日期和类别“Gas”进行比较。我可以使用 B 列中的以下公式在一个月内执行此操作:

=ArrayFormula(SUMIFS('Main Ledger'!D:D,MONTH('Main Ledger'!A:A),MONTH(A2),YEAR('Main Ledger'!A:A),YEAR(A2),'Main Ledger'!F:F,"Gas"))

Gasoline analytics

因为我必须使用 arrayformula 在分类帐上进行日期比较,所以我无法弄清楚如何使用 arrayformula 自动将这个怪物公式应用于所有 B 列。随着 A 列的增长(自动因为 UNIQUE,我希望 B 列也增长。

我不想预填充 B 列并且周围有一堆零,主要是因为我将使用 A 列和 B 列来填充图表。

一次尝试:

=QUERY({Sheet1!A2:D}, 
 "select month(Col1),sum(Col4) 
  where Col4 is not null
  group by month(Col1) 
  label month(Col1)'month'")


更新:

=INDEX(ARRAY_CONSTRAIN(QUERY({TEXT(Sheet1!A2:A, "mmmm"), Sheet1!A2:D}, 
 "select Col1,sum(Col5),month(Col2) 
  where Col5 is not null
  group by month(Col2),Col1 
  label Col1'month'"), 9^9, 2))