gpt4 book ai didi

arrays - 如何使 FLATTEN 对非连续范围起作用?

转载 作者:行者123 更新时间:2023-12-04 19:46:44 27 4
gpt4 key购买 nike

我有一个 FLATTEN LAMBDA 函数,可以将数组中的数据展平。这很好用,但我想集成另一个数组参数,这样我就可以使用不连续的范围。

在我的示例中,A1:B6 范围位于 array 中并返回展平数据。

如何包含接受 D1:D6 作为附加范围的 array2 参数?

Example

公式:

FLATTEN =

LAMBDA(array,

LET(
rows,ROWS(array),
columns,COLUMNS(array),
sequence,SEQUENCE(rows*columns),
quotient,QUOTIENT(sequence-1,columns)+1,
mod,MOD(sequence-1,columns)+1,

INDEX(IF(array="","",array),quotient,mod)

)
)

最佳答案

编辑 7/4/22:

ms365 现在引入了一个名为 VSTACK() 的函数和 TOCOL()这允许我们从 GS 的 FLATTEN() 中缺少的功能(并且工作更流畅)

在您的情况下,公式可能变为:

=TOCOL(A1:D6,1)

那个小公式(第二个参数告诉函数忽略空单元格)将替换下面的所有其他内容。如果 C1:C6 包含您不想合并的值,您可以尝试以下操作:

=VSTACK(TOCOL(A1:B6),D1:D6)

上一个答案:

您不能真正创建一个 LAMBDA() 具有未知数量(预先)的数组以包含在展平中。您拥有多列数组的事实将导致“棘手”。以这种特定方式“展平”多个列的一种方法是:

enter image description here

G1中的公式:

=LET(X,CHOOSE({1,2,3},A1:A6,B1:B6,D1:D6),Y,COLUMNS(X),Z,SEQUENCE(COUNTA(X)),INDEX(X,CEILING(Z/Y,1),MOD(Z-1,Y)+1))

编辑:根据您的评论,您可以这样扩展:

=LET(X,CHOOSE({1,2,3},IF(A1:A6="","",A1:A6),IF(B1:B6="","",B1:B6),IF(D1:D6="","",D1:D6)),Y,COLUMNS(X),Z,SEQUENCE(ROWS(X)*Y),FLAT,INDEX(X,CEILING(Z/Y,1),MOD(Z-1,Y)+1),FILTER(FLAT,FLAT<>""))

关于arrays - 如何使 FLATTEN 对非连续范围起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71112859/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com