0

我正在使用 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

4

2 回答 2

0

我只是在检查一个空单元格(“”)来决定何时停止。一开始就确定行数会更有效(而不是每次都检查一个空单元格),但是对于 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.

于 2013-07-27T19:39:04.993 回答
0

这对你有用吗?

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
于 2013-07-27T18:03:14.780 回答