ArrayFormula() 间接引用范围的动态和列表

ArrayFormula() List of Dynamic Sums from Indirectly Referenced Ranges

我有一个问题,我似乎无法找到使用 Google Sheets 的解决方案。我需要使用已排序但输入范围的大小未确定的数据生成部分和列表。部分和范围的大小同样未确定。

我知道如何在 AppScript 中执行此操作。但是,我似乎 运行 遇到了加载函数的问题,因此我的计算速度变慢了。所以我想找到一个使用公式的解决方案。

这是我正在处理的数据示例:https://docs.google.com/spreadsheets/d/1HCCM2sJ3lwIjLBUIKbaSFyUVKexXOSKkNmxp4bSd0xA/edit?usp=sharing

我使用生成的间接范围列表包括了原始示例输入和预期结果以及我现在尝试使用的内容。

另一种看待问题的方式是:我想对数据进行分组,但要保持列表的整体完整性;减少列表中的冗余。

有没有人对仅使用 Google Sheet 公式的更完整的解决方案有任何想法?

尝试

=sum(indirect(B2))

并向下拖动。

编辑: 一个公式解(在第2行输入):

=ArrayFormula(MMult(--IF((transpose(row(indirect("A2:A"&max(--RegexExtract(Filter(B2:B,B2:B<>""),":.*?(\d+)")))))<--RegexExtract(filter(B2:B,B2:B<>""),"(\d+):"))+(transpose(row(indirect("A2:A"&max(--RegexExtract(Filter(B2:B,B2:B<>""),":.*?(\d+)")))))>--RegexExtract(filter(B2:B,B2:B<>""),":.*?(\d+)")),,transpose(indirect("A2:A"&max(--RegexExtract(Filter(B2:B,B2:B<>""),":.*?(\d+)"))))),row(indirect("A2:A"&max(--RegexExtract(Filter(B2:B,B2:B<>""),":.*?(\d+)"))))^0))