如何多次重复过滤函数(每个动态列范围)

如何多次重复过滤函数(每个动态列范围)

我有一张桌子A1:C8

G1H1包含范围开始和结束。

这用于为范围创建一系列列(从 K1 开始,使用功能:=SEQUENCE(1;(H1-G1)+1;G1;1)

在此处输入图片描述

现在K2有一个FILTER函数,可以根据给定的列值过滤值K1。(现实生活中的数据更加复杂)

在此处输入图片描述

问题很简单,但解决方案可能不是:

对于给定的(动态序列)重复该过滤功能如何?

K2将会:=FILTER(A2:A8; B2:B8 >= K1; "nothing")

L2将会:=FILTER(A2:A8; B2:B8 >= L1; "nothing")

M2将会:=FILTER(A2:A8; B2:B8 >= M1; "nothing")

...

对由此序列定义的给定动态列范围进行重复:=SEQUENCE(1;(H1-G1)+1;G1;1)

答案1

LAMBDA()这是使用辅助函数实现所需输出的一种方法MAKEARRAY()--> 将扩展任意数量的行/列,而无需递归执行,也无需每次迭代后进行堆叠。将比任何LAMBDA()辅助函数都更快、更高效。

在此处输入图片描述


• 单元格中使用的公式K2

=LET(
     _Data, A2:C8,
     _Rows, MAX(COUNTIFS(TAKE(_Data,,2),">="&K1#)),
     _Columns, COLUMNS(K1#),
     IFERROR(MAKEARRAY(_Rows, _Columns, LAMBDA(r,c,
     INDEX(FILTER(TAKE(_Data,,1),INDEX(_Data,,2)>=INDEX(K1#,c),"nothing"),r))),""))

答案2

您可以使用以下REDUCE函数:

=IFNA(DROP(REDUCE("",K1#,LAMBDA(a,b,HSTACK(a,FILTER(A2:A8,B2:B8>=b,"nothing")))),,1),"")

数据由OP提供。
动态列表

相关内容