【问题标题】:ARRAYFORMULA with repetition带有重复的 ARRAYFORMULA
【发布时间】:2020-09-12 17:39:20
【问题描述】:

我有两列数据,并希望将其中一列的元素分布在几行中。我可以很容易地计算出我需要的元素的索引,但不知道如何访问该元素。

A    B   Desired output  Formula for index: =ARRAYFORMULA(IF(A:A,CEILING(ROW(A:A)/3+1),""))
1    11       22                  2
2    22       22                  2
3    33       22                  2
4    44       33                  3
5             33                  3
6             33                  3
7             44                  4

如何修改索引公式,使其在计算的索引处生成 B 列的项目?

我尝试了=ARRAYFORMULA(IF(A:A, INDEX(B:B, CEILING(ROW(A:A)/3+1), 1), "")),但这只会重复第一个元素 (22) 7 次。

【问题讨论】:

  • 在C列中使用索引公式怎么样?

标签: google-sheets array-formulas


【解决方案1】:

使用 Vlookup 代替索引:

=ARRAYFORMULA(IF(A:A,vlookup(CEILING(ROW(A:A)/3+1),A:B,2),""))

编辑

没有必要使用键列,你可以使用这样的东西:

=ARRAYFORMULA(vlookup(CEILING(sequence(counta(B:B)*3)/3+1),{row(B:B),B:B},2))

假设您想为 B 列中的每个非空白行生成三行,不包括第一行。

或者,如果您想与众不同,请使用连接/拆分方法:

=ArrayFormula(flatten(split(rept(filter(B:B,B:B<>"",row(B:B)>1)&"|",3),"|")))

(以上所有假设您想忽略 col B 中的第一行并从 22 开始)。

【讨论】:

  • 谢谢!是否可以不使用键列?我希望能够在不破坏公式的情况下更改“A”......但如果不可能,我将只使用一个单独的键列。我想知道为什么索引不起作用,它应该是为这个任务制作的。
  • 你的意思是,在所示的情况下生成 12 行(因为 B 列中有 4 行),而不在 A 列中输入数字?答案应该是“是”,并且可以添加到我的答案中。与 Excel 的区别之一 - 您可以强制索引生成数组,但在 Google 表格中则不能。
  • 我的意思是第一行——生成 7 行,但不要依赖 A 中的值来保持不变。但是也感谢您的第二个 - 在这里学习一些东西!
猜你喜欢
  • 2021-04-07
  • 2020-08-15
  • 2015-07-16
  • 2017-01-19
  • 1970-01-01
  • 1970-01-01
  • 2015-09-21
  • 2019-09-29
  • 1970-01-01
相关资源
最近更新 更多