我有一张桌子A1:C8
。
G1
并H1
包含范围开始和结束。
这用于为范围创建一系列列(从 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))),""))