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. または、2 つの範囲オブジェクトを使用して、コピー/貼り付けを 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)

下の 2 行目から、貼り付けたばかりのフォーミュラを選択します。それらをコピーします。次に、内容を値として同じ場所に貼り付けます。

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

または、コピーと貼り付けを使用せずに範囲値を割り当てることもできます。

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

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

この割り当ての後、r1 に数式がある場合でも、r2 範囲には数式ではなく値が含まれます。

あなたの場合、おそらく:

rng.Value = rng.Value

(注意したように rng を正しいサイズに設定したら)

于 2012-10-20T18:52:11.700 に答える