Excel VBA:将列转置为行

时间:2016-10-11 15:08:21

标签: excel vba excel-vba transpose

我需要将我的列移调到一行。我找到了一个可行的代码,但它并没有完全符合我的要求。

这是我运行代码之前的文件:

File Before

这是我运行代码后文件的样子:

File After

我希望我的结果显示在列顶部单元格所在的行上。在这种情况下,我希望列在第5行进行转置,而不是像第二张图片中那样跳到第1行。

这是我的代码:

Private Sub CommandButton1_Click()
Dim rng As Range
Dim I As Long

    Set rng = Range("B5")
    While rng.Value <> ""
        I = I + 1
        rng.Resize(60).Copy
        Range("C" & I).PasteSpecial Transpose:=True
        Set rng = rng.Offset(60)

    Wend
    rng.EntireColumn.Delete
End Sub

1 个答案:

答案 0 :(得分:0)

一种方式:

'// source column range
Set rng = Range("B5", Range("B5").End(xlDown))

'// resize from destination cell, transpose
Range("B5").Resize(rng.Columns.Count, rng.Rows.Count).Value = WorksheetFunction.Transpose(rng)

'// clear transposed values
'// offset by 1 to preserve B5
rng.Offset(1, 0).Clear