使用VB在excel中转​​置

时间:2013-07-27 17:04:45

标签: vb.net excel

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

1 个答案:

答案 0 :(得分: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