2016-05-31 156 views
2

我在列A中有50000行數據的數據。我需要將每6行數據轉置爲6列。例如,來自A1:A6的數據必須轉換爲B1:G1。來自A7:A14的數據必須轉換爲B2:G2。我很感激任何人都可以爲此提供VBA代碼。用於將數據從行轉置到列的Excel VBA代碼

數據I具有在列A中,如下所示:

Col A 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 

轉置數據必須是在列B對col(G)所示如下:

Columns B C D E F G 
     1 2 3 4 5 6 
     7 8 9 10 11 12 

回答

3

額外的變種:

Sub TransposeRows2() 
    Dim i&, z&, x& 
    i = Cells(Rows.Count, "A").End(xlUp).Row 
    z = 1: x = 1 
    While z <= i 
     Range("B" & x).Resize(, 6) = _ 
      WorksheetFunction.Transpose(Range("A" & z).Resize(6)) 
     z = z + 6: x = x + 1 
    Wend 
End Sub 

測試:

enter image description here

+1

感謝,它的工作超快。精彩 – Siraj

5

試試這個:

Sub TransposeRows() 
    Dim rng As Range 
    Dim i As Long 

    Set rng = Range("A1") 
    While rng.Value <> "" 
     i = i + 1 
     rng.Resize(6).Copy 
     Range("B" & i).PasteSpecial Transpose:=True 
     Set rng = rng.Offset(6)    
    Wend 
    Application.CutCopyMode = False 
End Sub 

here得知。從我的身邊

+0

感謝它的工作 – Siraj

4

你並不需要爲這個宏。在B1輸入:

=OFFSET($A$1,COLUMNS($A:A)-1+(ROWS($1:1)-1)*6,0) 

然後複製兩跨,下:

enter image description here

+0

謝謝,但如果拖動/複製它複製到所有單元格。 – Siraj

0

在葡萄牙語Excel中, 「Gary的學生」 的公式,爲4列,而不是6,就變成了:

=DESLOCAMENTO($A$1;COLS($A:A)-1+(LINS($1:1)-1)*4;0)