繁体   English   中英

在下一个空行的另一张纸上复制并粘贴(转置和值)设定范围

[英]Copy and Paste (transposed & values) a set range in a different sheet in the next empty row

我在名为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

它确实有空白,但我不知道如何更改它以使其转置数据并仅给我值。 你能帮我改变吗? 如果您有新选择,也可以。 干杯

遇到这样的问题时,您需要做的是记录一个宏,了解它的工作原理,然后清理代码。

这是您手动完成并记录所需的内容后得到的结果:

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对象模型。 遇到这种情况时,可以使用“记录,清理和修改”方法。

您可以进一步将其缩短并尝试:

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。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM