2016-05-03 7 views
1

これはあなたの多くにとっては簡単かもしれませんが、私はVBAの新機能です。 以下は、複数のExcelファイル値を1つのマスターシートに追加するコードです。私はこれをやっている間、私は彼らのキー値に関する値を更新したいと思います。一致するキー値を見つけることによって値を更新する

ここで、私は、列Aのキー値とその行の他の列の他の値を含むExcelテーブルを持っています。以前に追加されたキー値と重複するキーを見つけたら、そのセルとその完全な行を削除したいと思います。そうすることで、私はその値を更新したいと思います。私は別のキーを追加する場合、それは問題なしでリストに残る必要があります。

どうすればいいですか?

+1

上記のコードは動作していますか、エラーが表示されていますか?もしそうなら、私たちにエラーコード/メッセージを渡してください。その行にエラーが発生しています。コードがエラーなしで実行されている場合は、(1)コードの現在の結果が何であるか、(2)上記コードの期待される結果がどのようなものであるか(そしてそれがどのように異なるか)を詳しく説明してください。現在私はあなたのコードに '.Copy'と' .PasteSpecial'しか見ることができません。私はあなたの投稿であなたが話している '.Delete 'をどのようにして達成したいのだろうと思います。 – Ralph

答えて

0

まず、サブシート(ソース)のキーを調べて、マスターのキーと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が既にあなたにいくつかのリンクを提供していたのを見ますか?とにかく、それが動作するかどうか私に教えてください。

+0

これはあなたのために働きます、答えとしてそれを受け入れてください。ありがとう! – Sun

関連する問題