Excel 公式以条件间距堆叠可变数量的可变长度数组

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

给定一个连续的、可变长度 (rx1) 数组的列表,动态堆叠数组(垂直),使它们遵循一组特定的规则 - 首先按状态表中的顺序列排序,然后按状态表中的顺序列排序。分类表;类别更改后跳过 1 个空格,状态更改后跳过 2 个空格;忽略空格;解决输出范围中的控制面板列补充规则(示例输出 1)。

Demo of Workbook

目标是产生此处显示的输出(作为数组): enter image description here

该文件可以在这里下载。谢谢!

arrays excel multidimensional-array lambda lambda-calculus
1个回答
0
投票

这是执行此操作的一种方法。这使用 2 个

LAMBDA()
辅助函数,一个是
MAKEARRAY()
根据两个条件创建主输出,而另一个使用
BYCOL()
作为标题行上的计数:

enter image description here


• 单元格中使用的公式 J29

=LET(
     _Seq, SEQUENCE(,MAX(Classifications['#])),
     _Class, TOROW(IF(_Seq<=Classifications['#],Classifications[Class])),
     _Header, VSTACK(_Class, TOROW(SORTBY(IF(_Seq,States[States]),States[Order]),,1)),
     _Rows, MAX( COUNTIFS(Entities[Classification],INDEX(_Header,1,),Entities[State],INDEX(_Header,2,))),
     _Output, IFERROR(MAKEARRAY(_Rows, COLUMNS(_Class), LAMBDA(r,c,
              INDEX(SORT(FILTER(Entities,(INDEX(_Class,c)=Entities[Classification])*(INDEX(_Header,2,c)=Entities[State])),4),r,1))),""),
     _Counts, BYCOL(_Output,LAMBDA(Σ,SUM(N(Σ<>"")))),
     VSTACK(_Counts, _Header, _Output))

© www.soinside.com 2019 - 2024. All rights reserved.