重复的ARRAYFORMULA

问题描述 投票:0回答:1

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

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次。

google-sheets array-formulas
1个回答
2
投票

用Vlookup代替Index。

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

enter image description here

EDIT

不一定要用键列,你可以用这样的方法。

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

假设你想为B列中的每一条非空白行生成三条记录 不包括第一条。

或者如果你想与众不同,可以使用concatenatesplit的方法。

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

(以上都是假设你想忽略B列的第一行,从22开始)。

© www.soinside.com 2019 - 2024. All rights reserved.