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

问题描述 投票:1回答:2

我在range P1:R13的一张名为Training Analysis的表格中有一些数据。我想在第二张名为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

它做空的空间但我不知道如何更改它以使其转置数据并仅给我值。你能帮我改变吗?如果你有新的选择也很好。干杯

excel vba excel-vba
2个回答
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对象模型。每当遇到这种情况时,您都可以使用“记录,清理和修改”方法。


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。

© www.soinside.com 2019 - 2024. All rights reserved.