在 Google 张中将每一行重复 N 次

Repeat each row N times in Google Sheets

我有一列包含 3 行,我希望能够将这些行每行重复 5 次。

例子

| Name |
|------|
| Dog  |
| Cat  |
| Ball |
|------|

期望输出

| Output |
|--------|
| Dog    |
| Dog    |
| Dog    |
| Dog    |
| Dog    |
| Cat    |
| Cat    |
| Cat    |
| Cat    |
| Cat    |
| Ball   |
| Ball   |
| Ball   |
| Ball   |
| Ball   |
|--------|

这是我尝试过的方法:

=TRANSPOSE(split(rept(join(";",A:A)&";",5),";"))

我的尝试产生:

| Output |
|--------|
| Dog    |
| Cat    |
| Ball   |
| Dog    |
| Cat    |
| Ball   |
| Dog    |
| Cat    |
| Ball   |
| Dog    |
| Cat    |
| Ball   |
| Dog    |
| Cat    |
| Ball   |
|--------|
=ARRAYFORMULA(TRIM(TRANSPOSE(SPLIT(QUERY(
 REPT(A1:A3&"♠", 5), ,999^99), "♠"))))


=SORT(TRIM(TRANSPOSE(SPLIT(QUERY(ARRAYFORMULA(
 REPT(A1:A3&"♠", 5)), ,999^99), "♠"))), 1, 0)

=transpose(split(join("~",ArrayFormula(rept({Balls}&"~",3))),"~"))

其中:

  • Range 是要重复的文本范围
  • Reps是重复次数

请注意,如果您的文本包含 ~,请将 "~" 的所有实例更改为另一个字符

还有一个技巧。

A1:A3 狗、猫、球在我的例子中重复了 4 次。

=ARRAYFORMULA( FLATTEN(A1:A3 & SPLIT(REPT(" |",4),"|")))

没有拆分和连接以及其他字符串操作,

=ARRAYFORMULA(FLATTEN(IF(SEQUENCE(ROWS(A2:A4),5),A2:A4)))
  • A2:A4重复范围
  • 5重复次数
  • SEQUENCE 创建二维数组
  • IF 将一维数组 A2:A4 转置为二维数组,其大小等于创建的 SEQUENCE 数组
  • FLATTEN 二维到一维数组。
A1 Name
A2 Dog
A3 Cat
A4 Ball
Output
Dog
Dog
Dog
Dog
Dog
Cat
Cat
Cat
Cat
Cat
Ball
Ball
Ball
Ball
Ball