arrayformula 中的动态范围不使用间接?

dynamic range in arrayformula without using indirect?

我在 spreadsheet 中有这个公式,它可以正常工作。公式放在"O:O"(这个来自O10)。 (我从丹麦语翻译了公式 - 希望我做对了)

=IFERROR(IF(I10<>"";sum(INDIRECT("L"&MATCH(LEFT(B10;LEN(B10)-6);B:B;0)):INDIRECT("L"&ROW()-1));"");"Fejl/Mangler reference")

这是结果

数据是从另一个 sheet 导入的,行会随时间变化,每个小计中可能有 added/removed 行需要考虑。

这就是我想将公式转换为数组公式或其他解决方案的原因?

我认为可行的是:

=Arrayformula(IF(ROW(R:R)=5;"Balance";IF(ROW(R:R)<7;"";IF(ROW(R:R)=7;"Sub Total";IF($I:$I<>"";sum(INDIRECT("L"&MATCH(LEFT(B:B;LEN(B:B)-6);B:B;0))&":"&INDIRECT("L"&ROW()-1));"")))))

我猜是间接的,所以我也试过用 vlookup 来做,但我也不知道。

有什么好主意吗?

这是文档的 link:Spreadsheet

单元格P8:

=ARRAYFORMULA(IF(J8:J="";; SUMIF(ROW(O8:O); "<="&ROW(O8:O); O8:O)))

单元格O8:

=ARRAYFORMULA(IF(I8:I="";;
 SUMIF(ROW(B8:B); "<="&ROW(B8:B); L8:L)-SUMIF(ROW(B8:B); "<"&VLOOKUP(
 VLOOKUP(ROW(B8:B); IF(B8:B<>""; {ROW(B8:B)\ SUBSTITUTE(B8:B; " i alt"; )}); 2; 1); {
 VLOOKUP(ROW(B8:B); IF(B8:B<>""; {ROW(B8:B)\ SUBSTITUTE(B8:B; " i alt"; )}); 2; 1)\
 ROW(B8:B)}; 2; 0); L8:L)))