我正在使用 VB 在 excel 中显示大数据。它们出现在 A1:A3000 中。我使用以下代码将 A1:A6 转换为 B1:G1:
sheet.Range("A1:A6").Copy()
sheet.Range("B1").PasteSpecial(Transpose:=True)
它正在工作,但我在将这个过程重复到 A3000 时遇到了麻烦。基本上我想将 1 列 x3000 行数据转换为 6 列 x 500 行数据,即最终结果应该有 500 行和列 B:G
我只是在检查一个空单元格(“”)来决定何时停止。一开始就确定行数会更有效(而不是每次都检查一个空单元格),但是对于 3000 行,这没什么大不了的:
Sub TransA()
Dim i As Long
Dim j As Integer
Application.ScreenUpdating = False
j = 1
For i = 1 To Rows.Count Step 6
If Cells(i, "A") = "" Then
Exit For
Else
Range(Cells(j, "B"), Cells(j, "G")).Formula = _
Evaluate("=TRANSPOSE(A" & i & ":A" & i + 5 & ")")
j = j + 1
End If
Next i
Application.ScreenUpdating = True
End Sub
它可以修改为使用 Copy/PasteSpecial,但我喜欢Evaluate
.
这对你有用吗?
Sub Test()
Dim R1 As Long, R2 As Long, C2 As Long
R2 = 1
C2 = 2
For R1 = 1 To ActiveSheet.UsedRange.Rows.Count
Cells(R2, C2) = Cells(R1, 1)
If C2 < 7 Then
C2 = C2 + 1
Else
R2 = R2 + 1
C2 = 2
End If
Next R1
End Sub