如何使用 arrayformula 创建多个不同长度的序列

How to create multiple sequences of varying lengths with arrayformula

假设我在 A 列中有一个包含 3 个值的列表。值的数量是任意的,因此可以有更多。例如:

 |A|B
-+-+-
1|4|
2|2|
3|3|

在 B 列中,我想得到一个序列,其中包括递增序列,其长度为 A 列中给定的值。所以上面的例子是:

The expected sequences:
4 = 1,2,3,4
2 = 1,2
3 = 1,2,3

The expected table:

  A|B
---+-
1|4|1
2|2|2
3|3|3
4| |4
5| |1
6| |2
7| |1
8| |2
9| |3

我目前通过在 B1 中使用以下函数来实现此目的:={SEQUENCE(A1);SEQUENCE(A2);SEQUENCE(A3)} 但是如您所见,如果我要向 A 列添加另一个值,则需要修改上述函数。我怎样才能动态地实现这一目标?

假设您的数据从 A2 开始,则使用以下公式:

=ARRAYFORMULA( transpose( split( join("\", LEFT(join( "\", COLUMN(offset($A,,,,max($A2:$A))) ), offset($A,,,COUNT($A2:$A))*2-1) ) ,"\") ) )

在单元格 B2 中。请注意,如果您的数字 >= 10,则必须特别注意 text( ... "00") 和 *2 --> *3 等等,相应地,如果您期望 >=100...

另一种方法(针对 google 张)。在 B1

=Arrayformula(transpose(split(textjoin("~", 1, if(column(1:1)<=A1:A, column(1:1),)), "~")))