使用过滤单元格上方的单元格按月分组

Group by month using cell above filtered cells

我有一个如下所示的电子表格:

https://docs.google.com/spreadsheets/d/1b29gyEgCDwor_KJ6ACP2rxdvauOzacDI9FL2K-jgg5E/edit?usp=sharing

我有两个感兴趣的列,日期和计数。每隔几个日期,就会有一个 "TOTAL" 行,其中将对与该 TOTAL 对应的所有计数求和。 我想要一个看起来像右边单元格的输出,其中所有 TOTAL 计数都根据月份求和。问题在于 A 列只有日期或 TOTAL,在不同的行中,并且无法更改此布局,让我觉得我需要引用 正上方的单元格 TOTAL A 列,其中包含正确的月份我想将 TOTAL 分组依据。

我不能仅按日期范围过滤 A 列的原因是使用不一致,有时计数数据仅输入到 TOTAL 行中。

我在互联网上搜索过 FILTER、INDIRECT、QUERY、SUMIFS 等...但找不到具体的操作方法。

我可以很容易地过滤 B 列,其中 A:A="TOTAL",但我认为在那之后我需要做的是使用 以上的每个单元格其中 A:A="TOTAL" 作为月份标准的范围,以某种方式使用我在这里找到的内容:https://exceljet.net/formula/sum-by-month,用“>=”&D3 和“<=”&EOMONTH(D3,0 ).

如有任何帮助或替代方案,我们将不胜感激。谢谢。

查询公式非常适合此类情况,但如果您计划查看多年数据,按月查看会引入问题:

=arrayformula(QUERY(QUERY({row(A:A),TEXT(A:A,"MMMM"),B:B},"SELECT max(Col1),Col2,sum(Col3) where Col3 is not null group by Col2 order by max(Col1) label Col2 'Month', sum(Col3) 'Count'"),"SELECT Col2,Col3"))

尝试:

=ARRAYFORMULA(QUERY({IF((B2:B="")*(A2:A=""),,VLOOKUP(ROW(A2:A), 
 IF(A2:A<>"total", {ROW(A2:A), DATEVALUE("01/"&MONTH(A2:A)&"/2000")}), 2, 1)), 
 IF(A2:A= "total", A2:A, ), B2:B}, 
 "select Col1,sum(Col3) 
  where lower(Col2) = 'total' 
  group by Col1 
  label sum(Col3)'' 
  format Col1'mmmm'", 0))

或不同的(偏移)方法:

=QUERY(FILTER({EOMONTH(INDIRECT("A1:A"&ROWS(B2:B)), 0), B2:B}, A2:A="total"),
 "select Col1,sum(Col2) 
  group by Col1 
  label sum(Col2)'' 
  format Col1'mmmm'", 0)