将数据从行转置为列的Excel VBA代码

5

我有一列包含50000行数据的A列数据。我需要将每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

转置后的数据必须如下所示,从B列到G列:
Columns  B   C   D   E   F   G
         1   2   3   4   5   6
         7   8   9   10  11  12
4个回答

9

试试这个:

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

Got this from here.


7

我这边还有一个额外的变体:

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

测试:

在此输入图片描述


7
您不需要宏来实现此功能。在 B1 中输入:
=OFFSET($A$1,COLUMNS($A:A)-1+(ROWS($1:1)-1)*6,0)

然后将两个都复制到下面和右边:

enter image description here


谢谢,但如果拖动/复制,它会在所有单元格中重复。 - Siraj

0
在葡萄牙语的Excel中,“Gary's Student”的公式,对于4列而不是6列,变为:
=DESLOCAMENTO($A$1;COLS($A:A)-1+(LINS($1:1)-1)*4;0)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接