我想将5列合并为一个,如下所示:
1 4 7 10 13
2 5 8 11 14
3 6 9 12 15
到这个
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
我有这个公式,我正在尝试调整它,但它失败了:(
= IF(ROW()&LT = COUNTA(A:A),INDEX(A:A,ROW()),IF(ROW()&LT = COUNTA(A:B),INDEX(B:B ,ROW() - COUNTA(A:A)),IF(ROW()> COUNTA(A:C), “”,INDEX(C:C,ROW() - COUNTA(A:B)))))
该语句使用3个IF函数,因为它需要组合3列:
你有什么想法吗?
答案 0 :(得分:0)
我已经测试了您的公式并且它按预期工作,但可能是您将公式放在公式中引用的列之一中,这将创建循环引用。
换句话说,尝试在不是A,B或C的列中使用您的公式,看看会发生什么。
旁注:对于你想要实现的目标,我建议尝试生成一个VBA宏,当你添加越来越多的列作为一个简单的时候,你的公式会变得非常冗长和繁琐宏可以让你用任意数量的列做这样的事情。
答案 1 :(得分:0)
您可以使用以下公式,只要您的结果与原始数据不在同一行或列中(并且可以在另一个工作表中)。此外,如果第一行或第一列中有空单元格,则公式将失败。
=IFERROR(INDEX($A$1:$E$3,MOD(ROWS($1:1)-1,COUNTA($A:$A))+1,INT((ROWS($1:1)-1)/COUNTA($A:$A))+1),"")
row
参数和column
函数的INDEX
参数,如果你把它分开,你会看到它们返回正确的参数序列。但是,您可以向数组添加任意数量的列或行。
如果你想将数组定义为任意大,那么如果真实数组可以扩展而不必更改公式,那么,在另一个工作表上,(例如Sheet2),其中{{ 1}}例如是myArtray
,请尝试:
Sheet1!$A$1:$Z$100
答案 2 :(得分:0)
您可以将其粘贴到代码模块中
Public Function OneDimensionalRange(source As Range)
Dim index As Integer
index = Application.Caller.Row
OneDimensionalRange = source.Cells(index).value
End Function
它可以用作工作表函数。
= OneDimensionalRange($ A $ 3:$ E $ 3)
答案 3 :(得分:-1)
这是我要求的S所需的公式。
=IF(ROW()<=COUNTA(A:A),INDEX(A:A,ROW()),IF(ROW()<=COUNTA(A:B),INDEX(B:B,ROW()-COUNTA(A:A)),IF(ROW()<=COUNTA(A:C),INDEX(C:C,ROW()-COUNTA(A:B)),IF(ROW()<=COUNTA(A:D),INDEX(D:D,ROW()-COUNTA(A:C)),IF(ROW()<=COUNTA(A:E),INDEX(E:E,ROW()-COUNTA(A:D)),IF(ROW()<=COUNTA(A:F),INDEX(F:F,ROW()-COUNTA(A:E)),IF(ROW()<=COUNTA(A:G),INDEX(G:G,ROW()-COUNTA(A:F)),IF(ROW()<=COUNTA(A:H),INDEX(H:H,ROW()-COUNTA(A:G)),IF(ROW()<=COUNTA(A:I),INDEX(I:I,ROW()-COUNTA(A:H)),IF(ROW()<=COUNTA(A:J),INDEX(J:J,ROW()-COUNTA(A:I)),IF(ROW()<=COUNTA(A:K),INDEX(K:K,ROW()-COUNTA(A:J)),IF(ROW()<=COUNTA(A:L),INDEX(L:L,ROW()-COUNTA(A:K)),IF(ROW()<=COUNTA(A:M),INDEX(M:M,ROW()-COUNTA(A:L)),IF(ROW()<=COUNTA(A:N),INDEX(N:N,ROW()-COUNTA(A:M)),IF(ROW()<=COUNTA(A:O),INDEX(O:O,ROW()-COUNTA(A:N)),IF(ROW()<=COUNTA(A:P),INDEX(P:P,ROW()-COUNTA(A:O)),IF(ROW()<=COUNTA(A:Q),INDEX(Q:Q,ROW()-COUNTA(A:P)),IF(ROW()<=COUNTA(A:R),INDEX(R:R,ROW()-COUNTA(A:Q)),IF(ROW()>COUNTA(A:S),"",INDEX(S:S,ROW()-COUNTA(A:R)))))))))))))))))))))