带重复的 ARRAYFORMULA
ARRAYFORMULA with repetition
我有两列数据,我想将其中一列的元素分布到多行中。我可以很容易地计算出我需要的元素的索引,但不知道如何访问该元素。
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 次。
使用 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 列中的每个非空白行生成三行,不包括第一行。
或者,如果您想与众不同,请使用 concatenate/split 方法:
=ArrayFormula(flatten(split(rept(filter(B:B,B:B<>"",row(B:B)>1)&"|",3),"|")))
(以上所有假设您要忽略 col B 中的第一行并从 22 开始)。
我有两列数据,我想将其中一列的元素分布到多行中。我可以很容易地计算出我需要的元素的索引,但不知道如何访问该元素。
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 次。
使用 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 列中的每个非空白行生成三行,不包括第一行。
或者,如果您想与众不同,请使用 concatenate/split 方法:
=ArrayFormula(flatten(split(rept(filter(B:B,B:B<>"",row(B:B)>1)&"|",3),"|")))
(以上所有假设您要忽略 col B 中的第一行并从 22 开始)。