Excel VBA - Range.Copy转置粘贴

use*_*306 12 excel vba transpose excel-vba

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

我想采取Worksheets("Sheet1").Range("A1","A5")并粘贴转置Worksheets("Sheet2").Range("A1","E1").

完成此任务的最简单方法是什么?

GSe*_*erg 34

Worksheets("Sheet1").Range("A1:A5").Copy
Worksheets("Sheet2").Range("A1").PasteSpecial Transpose:=True
Run Code Online (Sandbox Code Playgroud)


Gol*_*Jer 5

这是一个不使用剪贴板的有效选项。

Sub transposeAndPasteRow(rowToCopy As Range, pasteTarget As Range)
    pasteTarget.Resize(rowToCopy.Columns.Count) = Application.WorksheetFunction.Transpose(rowToCopy.Value)
End Sub
Run Code Online (Sandbox Code Playgroud)

像这样使用它。

Sub test()
    Call transposeAndPasteRow(Worksheets("Sheet1").Range("A1:A5"), Worksheets("Sheet2").Range("A1"))
End Sub
Run Code Online (Sandbox Code Playgroud)

  • 所有堆栈交换中最被低估的答案。 (3认同)
  • 为了让它正常工作,将 Range("A1:A5") 复制到 Range("A1:E1") 我需要将您的第一个代码修改为以下内容:`pasteTarget.Resize(, rowToCopy.Rows.Count ) = Application.WorksheetFunction.Transpose(rowToCopy.Value)`。主要更改为“调整大小”参数。 (3认同)
  • 这是更好的方法。特别是如果您正在寻找高性能。感谢您的代码! (2认同)