Excel复制粘贴值不同的工作表

时间:2013-08-07 14:37:54

标签: excel excel-vba excel-2010 vba

在sheet1中我想复制列a,c,d,g的值并将其粘贴到第a,b,c,d列中的sheet2底部

我一直很难用这个,因为a,c,d,g的列包含公式,所以当我使用复制/目标方法时,它最终会破坏宏。

3 个答案:

答案 0 :(得分:1)

我个人会使用copy和pastespecial,因为那样你就可以选择粘贴值或格式了。但是,如果您不喜欢该路线,您还可以将列中的值分配给数组并将其粘贴到其中。

以下是您将如何处理此类问题的示例:

Sub test()
Dim colA As Variant
Dim colB As Variant
Dim colC As Variant
Dim lrow As Long

'putting the ranges into arrays
With Sheets(1).UsedRange
    colA = .Columns("A")
    colB = .Columns("B")
    colC = .Columns("C")
End With

'putting arrays back into ranges
'note the use of resize to fit the target range with arrays
With Sheets(2)
    lrow = .UsedRange.Rows.Count + 1
    .Range("A" & lrow).Resize(UBound(colA, 1), 1) = colA
    .Range("B" & lrow).Resize(UBound(colB, 1), 1) = colB
    .Range("C" & lrow).Resize(UBound(colC, 1), 1) = colC
End With

End Sub

答案 1 :(得分:0)

在相关范围内使用粘贴特殊方法。请参阅the Microsoft help resource上的链接。 您将需要修饰符xlPasteValues。

答案 2 :(得分:0)

我可以想到3种方法,而且基本上都使用复制/粘贴

  1. 使用rwtwm建议的方法。示例代码为

    Sheets("Sheet1").Range("A1:A10").Copy
    Sheets("Sheet2").Range("A1").PasteSpecial Paste:=xlPasteValues, _
        Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    
  2. 复制值

    Sheets("Sheet2").Range("A1:A10").Value = _
        Sheets("Sheet1").Range("A1:A10").Value
    
  3. 将数据复制到数组中,然后使用该数据将该数组复制到另一个工作表中

    Dim MyData
    MyData = Sheets("Sheet1").Range("A1:A10")
    Sheets("Sheet2").Range("A1:A10") = MyData