0

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

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

4

3 回答 3

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
于 2013-08-07T15:20:15.217 回答
0

在有问题的范围内使用特殊粘贴方法。请参阅Microsoft 帮助资源中的链接。您将需要修饰符 xlPasteValues。

于 2013-08-07T14:47:07.660 回答
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
    
于 2013-08-07T15:28:43.297 回答