Excel VBA - Range.Copy转置粘贴

时间:2012-01-13 15:14:48

标签: excel-vba transpose vba excel

我正在尝试一些非常简单的事情,但我似乎陷入困境。我正在关注PasteSpecial的帮助菜单,但我似乎无法让我的代码在没有错误的情况下运行。

我想要Worksheets("Sheet1").Range("A1","A5")并将转置粘贴到Worksheets("Sheet2").Range("A1","E1")

实现这一目标的最简单方法是什么?

3 个答案:

答案 0 :(得分:32)

Worksheets("Sheet1").Range("A1:A5").Copy
Worksheets("Sheet2").Range("A1").PasteSpecial Transpose:=True

答案 1 :(得分:0)

这是不使用剪贴板的有效选择。

Sub transposeAndPasteRow(rowToCopy As Range, pasteTarget As Range)
    pasteTarget.Resize(rowToCopy.Columns.Count) = Application.WorksheetFunction.Transpose(rowToCopy.Value)
End Sub

像这样使用它。

Sub test()
    Call transposeAndPasteRow(Worksheets("Sheet1").Range("A1:A5"), Worksheets("Sheet2").Range("A1"))
End Sub

答案 2 :(得分:0)

WorksheetFunction Transpose()

代替复制,通过PasteSpecial粘贴以及使用Transpose选项,您只需输入公式即可

    =TRANSPOSE(Sheet1!A1:A5)

或者如果您喜欢VBA:

    Dim v
    v = WorksheetFunction.Transpose(Sheet1.Range("A1:A5"))
    Sheet2.Range("A1").Resize(1, UBound(v)) = v

注意或者,您可以改用后期绑定的Application.Transpose

MS help reference指出,当前版本为 Microsoft 365 ,您可以在目标范围的左上角单元格中简单地输入公式,否则必须以通过 Ctrl + Shift + Enter 来确认旧式数组公式。

版本 Excel版本。 2007年以上版本,自2011年以来为Mac,Excel for Microsoft 365