我在名为Training Analysis的工作表上的range P1:R13
中有一些数据。
我想在第二张名为Foglio1的表格中copy and paste
这些数据。我希望它只是values
。我需要将这些数据粘贴到range A2:M4
中,换句话说我希望将其转置。
我得到了以下代码,它正在运行。但现在,当我获得新数据时,我需要将它们粘贴到我已经拥有的数据之下。
Sub add()
Dim lastrow As Long
lastrow = Sheets("Foglio1").Range("A65536").End(xlUp).Row ' or + 1
Range("P1:R13").Copy Destination:=Sheets("Foglio1").Range("A" & lastrow)
End Sub
它做空空间但我不知道如何更改它以使其转置数据并仅给我值。 你能帮我改变吗?如果你有新的选择也很好。 干杯
答案 0 :(得分:1)
当您遇到类似问题时,您需要做的是录制宏,了解它的工作原理,然后清理代码。
这是您在完成手动操作并录制后所获得的内容:
Range("P1:R13").Select
Selection.Copy
Sheets("Foglio1").Select
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=True
稍微清理一下并添加确定最后一行,这是你应该得到的:
Dim lastRow As Long
Sheets("Training Analysis").Range("P1:R13").Copy
lastRow = Sheets("Foglio1").Range("a65536").End(xlUp).Row
Sheets("Foglio1").Range("A" & lastRow + 1).PasteSpecial Paste:=xlPasteValues, Transpose:=True
在这种特殊情况下,您并不知道需要使用PasteSpecial方法,但这没关系:您不需要记住整个Excel对象模型。您可以使用'记录,清理和修改'无论何时你处于这种情况。
答案 1 :(得分:0)
你可以进一步缩短它并尝试:
Sub add()
Range("Foglio1!A2:M4").Value2 = Application.WorksheetFunction.transpose(Range("Training Analysis!P1:R13").Value2)
End Sub
这当然适用于这种特定情况,因此,为了进一步使用,您必须确保更新工作表名称和范围(如果它们发生变化)。您还必须自己检查区域是否相同(例如15x2到5x6个单元格)。这些检查可以在程序中添加,但上面的代码暂时可以解决。
编辑:我看到你的规范有点太晚了。 :) 这是改编的代码,它应该找到工作表“Foglio1”,A列上的第一个可用行,并将转置的值粘贴到3x13区域。试一试。Sub add2()
With Sheets("Foglio1")
.Cells(.Range("A" & .Rows.Count).End(xlUp).Row + 1, 1).Resize(3, 13).Value2 = _
Application.WorksheetFunction.Transpose(Sheets("Training Analysis").Range("P1:R13").Value2)
End With
End Sub
编辑2:更新了add2
,以便源范围可以参考工作表“培训分析”并防止错误#1004。