我正在尝试一些非常简单的事情,但我似乎被卡住了。我正在关注帮助菜单,PasteSpecial
但我似乎无法让我的代码在没有错误的情况下正常工作。
我想将Worksheets("Sheet1").Range("A1","A5")
转置粘贴到Worksheets("Sheet2").Range("A1","E1")
.
完成此任务的最简单方法是什么?
Worksheets("Sheet1").Range("A1:A5").Copy
Worksheets("Sheet2").Range("A1").PasteSpecial Transpose:=True
这是一个不使用剪贴板的有效选项。
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
工作表函数转置()
无需通过 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