我在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
答案 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)
答案 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
测试:
答案 3 :(得分:0)
在葡萄牙语Excel中,“加里学生”的公式为4列而不是6列,变为:
=DESLOCAMENTO($A$1;COLS($A:A)-1+(LINS($1:1)-1)*4;0)