如何使用ARRAYFORMULA处理数组

时间:2018-06-07 19:48:26

标签: google-sheets array-formulas

我目前正在研究一个公式,但我似乎无法按照我想要的方式工作。

电子表格的A列看起来像这样:

| A |
| B |
| C |
| D |
| E |

我想要做的是获得这样的输出:

| A |
| A | B |
| A | B | C |
| A | B | C | D |
| A | B | C | D | E |

所以我尝试使用offset,从第一行到每行的当前行。

=ARRAYFORMULA(TRANSPOSE(OFFSET(A1;0;0;ROW(A1:A5)))

但由于ROW(A1:A5)没有返回数组,因此单元格只是| A |
所以我尝试在ARRAYFORMULA周围添加ROW(A1:A5),我的目标是:

| 1 |
| 2 |
| 3 |
| 4 |
| 5 |

这就是我需要的!但是如果我将它添加到原始函数中,我仍然只能获得| A |

有没有办法让我去强迫" ARRAYFORMULA要在A1:A5上运行,以便获得所需的输出?

附加数据

  • 我知道使用脚本会更容易,但脚本解决方案并不是我想要的。我试图理解为什么会这样做以及如何防止它。
  • 这个公式意味着在另一个公式中使用,所以我需要它只有1个公式,我不能用十字架来扩展它。
  • 我不介意解决方案是否无法显示(如果数组通过示例叠加自己)。
  • 我做了一个演示here
  • 我也尝试使用INDIRECT代替OFFSET来获取范围,但我得到的结果相同。

2 个答案:

答案 0 :(得分:2)

请尝试在Row1的某个地方,假设这是您的第一个A,并将其复制到适合的地方:

=SPLIT(JOIN("|",A$1:A1),"|")

(作为数组公式,如果必须的话。)

答案 1 :(得分:0)

假设您的数据位于A1:A8,请在C1输入此公式,然后将其复制到C2:C8

= TRANSPOSE ( ARRAY_CONSTRAIN( $A$1:$A$8 , 1 + ROW() - ROW( $C$1 ) , 1 + COLUMN() - COLUMN( $C$1 ) ))

enter image description here