18

我正在尝试一些非常简单的事情,但我似乎被卡住了。我正在关注帮助菜单,PasteSpecial但我似乎无法让我的代码在没有错误的情况下正常工作。

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

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

4

3 回答 3

41
Worksheets("Sheet1").Range("A1:A5").Copy
Worksheets("Sheet2").Range("A1").PasteSpecial Transpose:=True
于 2012-01-13T15:18:41.317 回答
9

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

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
于 2019-12-12T00:02:01.870 回答
2

工作表函数转置()

无需通过 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 帮助参考指出,拥有当前版本的Microsoft 365,可以简单地在目标范围的左上角单元格中输入公式,否则必须通过Ctrl+Shift+Enter将公式作为旧数组公式输入以确认它。

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

于 2020-08-20T19:11:59.900 回答