我正在尝试一些非常简单的事情,但我似乎陷入困境。我正在关注PasteSpecial
的帮助菜单,但我似乎无法让我的代码在没有错误的情况下运行。
我想要Worksheets("Sheet1").Range("A1","A5")
并将转置粘贴到Worksheets("Sheet2").Range("A1","E1")
。
实现这一目标的最简单方法是什么?
答案 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