在下一个空行中复制并粘贴(转置和值)一个设置范围在不同的工作表中

我在名为Training Analysis的工作表中得到了range P1:R13一些数据。 我想copy and paste这些数据copy and paste到名为Foglio1的第二张纸上。 我希望它只是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 

我做empy空间,但我不知道如何改变它,使转置,给我只有价值观。 你能帮我改变吗? 如果你有新的select也很好。 干杯

当你有这样的问题时,你需要做的是logging一个macros,理解它是如何工作的,然后清理代码。

这是你手动完成你所需要的并logging下来的结果:

 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对象模型。 在这种情况下,您可以使用“logging,清理和修改”方法。

你可以进一步缩短并尝试:

 Sub add() Range("Foglio1!A2:M4").Value2 = Application.WorksheetFunction.transpose(Range("Training Analysis!P1:R13").Value2) End Sub 

当然,这适用于这种特殊情况,因此,为了进一步使用,您必须确保更新表单名称和范围(如果它们更改)。 你也必须自己检查这些区域是否相同(例如15×2到5×6的单元格)。 这些检查可以在程序中添加,但上面的代码应该做的伎俩。

编辑:我看到你的规格有点晚了。 :)这是适应的代码,它应该find工作表“Foglio1”列A上的第一个可用行,并将转置值粘贴到3×13区域。 搏一搏。

 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。