まず、サブシート(ソース)のキーを調べて、マスターのキーと1つずつ比較してください。マッチするものはすべてマスターから削除する必要があります。次に、サブシートからマスターにデータ全体をコピーします。
私のコードは、したがって、この行の前に行く:
'copy relevant range from the subsheet
ws.Range("C1:C" & usedRangeSub).Copy
はあなたと私の変数を置き換えます。それが原因に短くなりますよう
With mastersheet
for i = firstrow to lastrow 'first and lastrow of data in subsheet
set f = .Range("A:A").Find(ws.Range("A" & i).Value, _
LookIn:=xlValues, LookAt:=xlWhole)
If Not f is Nothing then
.Range("A" & f.Row).EntireRow.Delete
End If
next i
end with
は、この後usedRangeMasterを更新することを忘れないでください削除。次に、データをコピーしてコピーします。
注:このコードでは、キーが一意であることを前提としています。マスターに重複することはありません(マスタがこのコードでのみ書かれている場合)。それは、それがマスターを一度しか検索しない理由です。
編集:私はfreakfeuerが既にあなたにいくつかのリンクを提供していたのを見ますか?とにかく、それが動作するかどうか私に教えてください。
出典
2016-05-03 09:29:28
Sun
上記のコードは動作していますか、エラーが表示されていますか?もしそうなら、私たちにエラーコード/メッセージを渡してください。その行にエラーが発生しています。コードがエラーなしで実行されている場合は、(1)コードの現在の結果が何であるか、(2)上記コードの期待される結果がどのようなものであるか(そしてそれがどのように異なるか)を詳しく説明してください。現在私はあなたのコードに '.Copy'と' .PasteSpecial'しか見ることができません。私はあなたの投稿であなたが話している '.Delete 'をどのようにして達成したいのだろうと思います。 – Ralph