2017-02-18 28 views
0

假設我們有兩列,包括一百萬行 像這樣:如何在Excel中將列轉置爲行(有中斷)?

1

什麼是正確的公式或VBA再拍安排表這樣嗎?

2

+0

你有什麼試過?例子會幫助其他人避免不起作用的東西。有一點需要注意的是「所有關鍵字都是紅色的?」如果是這樣,那麼也許可以基於顏色在關鍵字之間搜索如果它們不是紅色的,那麼是否有「關鍵」或關鍵字列表? –

+0

感謝您的建議。紅色文本僅僅是爲了引起更多關注。由於您的擔心,我編輯了pix。我們只需要將每組數據轉置到旁邊。 – Sushiant

+0

有兩個問題。對於需要創建的額外列的數量是否存在已知的嚴格限制?你需要一個純粹的Excel答案還是VBA解決方案可以接受? – xarxziux

回答

0

對於純的Excel解決方案嘗試。

首先你需要添加一個輔助列。這隻在標題行返回TRUE,否則返回FALSE。這不是嚴格必要的,但它會使公式的其餘部分更簡單。在你上面提供的樣品中,鍵入此單元格C1:

=IF(A1=B1,TRUE,FALSE) 

現在進入這個小區D1:

=IF(AND(C1,NOT(C2)),A2,"") 

這樣做是檢查當前的行頭,但不是下一個,如果是,則複製下一行的第一個單元格,如果不是,則返回空白字符串。

每個後續單元格遵循相同的模式,但它首先檢查前一個單元格是否爲空。在E1單元格中輸入這個函數:

=IF(D1="","",IF(AND(C1,NOT(C3)),A3,"")) 

現在你只需要複製另外10個單元格。不幸的是,複製和粘貼不起作用,因爲您需要向下增加A3和C3,而複製和粘貼並將它們增加到右側。因此,從E1,我們得到:

F1: =IF(E1="","",IF(AND(C1,NOT(C4)),A4,"")) 
G1: =IF(F1="","",IF(AND(C1,NOT(C5)),A5,"")) 
. 
. 
. 
O1: =IF(N1="","",IF(AND(C1,NOT(C13)),A13,"")) 

現在將這些單元格複製到數據集的底部,您應該得到您所追蹤的結果。這裏有一個例子:

Completed example

注意,在小區C21額外true,這樣最後計算終止正確。然而,如果你的數據集中真的有一百萬行,我會質疑使用Excel的智慧。根據您的情況和資源,您最好將數據保存在文本文件中並使用適當的腳本語言進行處理。