使用范围,如何将.COPY DESTINATION粘贴为VALUES

aSy*_*oad 6 excel vba excel-vba excel-2010

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

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)
Run Code Online (Sandbox Code Playgroud)
  1. 有可能做到这一点paste special.
  2. 或者我是否需要使用两个范围对象将复制/粘贴分成两行?

编辑:

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

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

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


Dim ws As Worksheet, rng As Range
Set ws = Sheets("Duplicates")
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

Eri*_*idt 4

或者,您可以只分配范围值,而不使用复制和粘贴:

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

r2.Value = r1.Value ' copies current values from one range to another
Run Code Online (Sandbox Code Playgroud)

完成此分配后,即使 r1 有 forumlas,r2 范围也将具有值而不是公式。

在你的情况下,也许:

rng.Value = rng.Value
Run Code Online (Sandbox Code Playgroud)

(一旦您将 rng 设置为您所注意到的正确大小)