Excel VBA代码,用于将数据从行转置为列

时间:2016-05-31 12:08:33

标签: excel vba excel-vba

我在A列中有50000行数据。我需要将每6行数据转换为6列。例如,来自A1:A6的数据必须转换为B1:G1。同样来自A7:A14的数据必须转换为B2:G2。如果有人能为此提供VBA代码我感激不尽。

  

A栏中的数据如下所示:

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

转置数据必须如下面的col B到col G:

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

4 个答案:

答案 0 :(得分:8)

试试这个:

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

答案 1 :(得分:7)

您不需要宏。在 B1 中输入:

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

然后向上和向下复制:

enter image description here

答案 2 :(得分:6)

我身边的其他变种:

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

答案 3 :(得分:0)

在葡萄牙语Excel中,“加里学生”的公式为4列而不是6列,变为:

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