簡體   English   中英

在Excel中將5列合並為一列

[英]Combine 5 columns into one in Excel

我想將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()<= 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)))))

該語句使用3個IF函數,因為它需要合並3列:

  1. 對於A列,該函數將一個單元格的行號與A列中不為空的單元格總數進行比較。 如果結果為true,則該函數從row()處的A列返回單元格的值。 如果結果為假,該函數將繼續執行下一個IF語句。
  2. 對於B列,該函數將一個單元格的行號與A:B范圍內不為空的單元格總數進行比較。 如果結果為true,則函數返回列B中第一個不為空的單元格的值。如果為false,則函數移至下一個IF語句。
  3. 對於C列,該函數將一個單元格的行號與A:C范圍內不為空的單元格總數進行比較。 如果結果為true,則該函數將返回一個空白單元格,並且不再進行任何計算。 如果為false,則該函數返回列C中第一個不為空的單元格的值。

你有什么想法?

只要您的結果與原始數據不在同一行或列中(並且可以在另一工作表中),就可以使用以下公式。 此外,如果第一行或第一列中有空單元格,則公式將失敗。

=IFERROR(INDEX($A$1:$E$3,MOD(ROWS($1:1)-1,COUNTA($A:$A))+1,INT((ROWS($1:1)-1)/COUNTA($A:$A))+1),"")

如果將INDEX函數的row參數和column參數分開,它們將返回正確的參數序列。 但是,您可以將任意數量的列或行添加到數組。

如果要將數組定義為任意大,那么如果您的實際數組可以擴展而不必更改公式,則在另一個工作表(例如Sheet2)上, myArtray例如為Sheet1!$A$1:$Z$100 ,請嘗試:

=IFERROR(IF(INDEX(myArray,MOD(ROWS($1:1)-1,COUNTA(Sheet1!$A:$A))+1,INT((ROWS($1:1)-1)/COUNTA(Sheet1!$A:$A))+1)="","",
INDEX(myArray,MOD(ROWS($1:1)-1,COUNTA(Sheet1!$A:$A))+1,INT((ROWS($1:1)-1)/COUNTA(Sheet1!$A:$A))+1)),"")

我已經測試了您的公式,它可以按預期工作,盡管您可能將公式放在公式中引用的其中一列中,這將創建一個循環引用。

換句話說,請嘗試在非A,B或C的列中使用公式,然后看看會發生什么。

旁注:對於您要實現的目標,我建議嘗試改為生成VBA宏,因為您添加了越來越多的列,因此公式可能會變得很冗長而煩躁,因為一個簡單的宏可以讓您對任何列數。

您可以將其粘貼到代碼模塊中

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)

這是我需要的直到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)))))))))))))))))))))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM