修改复杂的地图公式放入标题

问题描述 投票:0回答:1

我有一个我不明白的复杂公式:

=map(A2:index(A:A,match(,0/(A:A<>""))),lambda(Σ,if(Σ="",,map(BZ1:CW1,lambda(Λ,let(x,index(sumifs('Ref4'!Q:Q,'Ref4'!G:G,Σ,--'Ref4'!P:P,">="&Λ,--'Ref4'!P:P,"<"&if(day(Λ)=1,offset(Λ,,1),eomonth(Λ,)))),if(x=0,,x)))))))

用于解决此处描述的问题:数组公式对匹配 ID 进行 SUM AND 当日期位于两个日期之间时

但是,我想将此公式放在标题中,因为我不断对工作表中的数据进行高级排序(数据-->排序范围--->高级范围排序选项),这会移动该公式的位置,因此会扰乱其计算。

我过去用作标题的完全不同的数组公式的示例如下所示:

={"Total Harvest kg";
 ARRAYFORMULA(SUMPRODUCT(('Ref4'!$G$2:$G = TEXT($A$2:$A, "0")) * 'Ref4'!$Q$2:$Q))}

当我尝试时:

={"Don't Delete";
map(A2:index(A:A,match(,0/(A:A<>""))),lambda(Σ,if(Σ="",,map(BZ1:CW1,lambda(Λ,let(x,index(sumifs('Ref4'!Q:Q,'Ref4'!G:G,Σ,--'Ref4'!P:P,">="&Λ,--'Ref4'!P:P,"<"&if(day(Λ)=1,offset(Λ,,1),eomonth(Λ,)))),if(x=0,,x)))))))
 }

我收到错误:#VALUE!在 ARRAY_LITERAL 中,数组文字缺少一行或多行的值。

理想情况下,我可以将此标题/公式放在 BY1 或 BZ1 中。如果它在 BZ1 中,标头仍需要是相同的日期“01/01/24” 这是表格:https://docs.google.com/spreadsheets/d/1k6nyu3xh0sLvbWjJ_vValAklzeTy72fvv3Cp0pEo--Y/edit?usp=sharing

arrays google-sheets sum header array-formulas
1个回答
0
投票

您无法使用您使用的语法解决此问题,因为数组的列大小不匹配。由于地图是从 BZ 到 CW,因此相应的标题行应该有 24 列。

@rockinfreakshow 可能对此有一个深奥的解决方案。

如果是我,我会复制 BZ1:CW1,将其粘贴到隐藏选项卡中,然后使用该工作表引用作为标题行,将公式放在 BZ1 中。例如,

={dates!A1:X1;
map(A2:index(A:A,match(,0/(A:A<>""))),lambda(Σ,if(Σ="",,map(BZ1:CW1,lambda(Λ,let(x,index(sumifs('Ref4'!Q:Q,'Ref4'!G:G,Σ,--'Ref4'!P:P,">="&Λ,--'Ref4'!P:P,"<"&if(day(Λ)=1,offset(Λ,,1),eomonth(Λ,)))),if(x=0,,x)))))))
 }
© www.soinside.com 2019 - 2024. All rights reserved.