6

我有以下代码,可以很好地将整个单元格复制到新的目的地。

Dim ws As Worksheet, rng As Range

Set ws = Sheets("Duplicates")
Set rng = ws.Range("A2")

rng.Copy Destination:=Range("A2:A" & Range("G" & Rows.Count).End(xlUp).Row)
  1. 是否有可能应对paste special.
  2. 或者我是否需要使用两个范围对象将复制/粘贴分成两行?

编辑:

是的,我们已经得出结论,您不能在与副本相同的行上使用特殊粘贴。我还发现您可能不希望这样做。

如果您从记录 1 复制公式并将其粘贴到所有记录中VALUES,您将获得复制下来的第一条记录的公式值。

这不是我想要的。因此,您必须将公式作为公式复制到所有记录中,然后复制这些公式并粘贴为值。


Dim ws As Worksheet, rng As Range
Set ws = Sheets("Duplicates")

设置第一个范围(带有公式的单个单元格)并根据 Col 将内容复制/粘贴到电子表格的底部G

Set rng = ws.Range("A2")
rng.Copy Destination:=Range("A2:A" & Range("G" & Rows.Count).End(xlUp).Row)

从第二行向下选择新粘贴的配方。复制它们。然后将内容作为值粘贴到同一位置。

Set rng = ws.Range("A3:A" & Range("G" & Rows.Count).End(xlUp).Row)
rng.Copy
rng.PasteSpecial (xlPasteValues)
Application.CutCopyMode = False 
4

1 回答 1

4

Alternatively, you can just assign range values without using copy & paste:

Set r1 = Range("D1", "D7")
Set r2 = Range("E1", "E7")

r2.Value = r1.Value ' copies current values from one range to another

after this assignment, the r2 range will have values not formulas even if r1 has forumlas.

In your case, perhaps:

rng.Value = rng.Value

(once you've set rng to the correct size as you've noted)

于 2012-10-20T18:52:11.700 回答