[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『2シート間での重複データの削除』(タツ)
お願いします。 Sheet1に製作完了品のデータがあり、Sheet2に出荷品の製品番号データがあります。 Sheet1とSheet2を比較し、重複しているものがあればSheet1のデータを削除するには どうしたらよいでしょう?
Sheet1(300行くらいあります) A B C D 1 製品番号 品名 材質 個数 2 22255 パネル P 2 3 22266 フック K 5 4 23555 ローラ F 2 5 28687 パネル P 6
Sheet2(100行くらいあります) A 1 製品番号 2 22255 3 58977 4 56988 5 22266
重複をチェックし、重複していたらSheet1のデータを行ごと削除。 ↓↓結果↓↓ A B C D 1 製品番号 品名 材質 個数 2 23555 ローラ F 2 3 28687 パネル P 6 4 5
よろしくお願いいたします。
マクロでの考え方です。(夕焼)
シート2のA列データを上から シート1のA列データの下方から比較して 同じならその行を削除する作業を シート2のA列データの上から繰返す。 以上をコードで記述
夕焼さん、ありごとうございます。 マクロは、作ったことがありません。 マクロ以外で、可能な方法はございますか?(タツ)
不一致のものを抽出するものは、既にご承知ですので、別のものを書きます。 [[20050616153320]]
1.Sheet1のA1:A5を選択し、データ、フィルタ、フィルタオプションの設定として、 リスト範囲に$A$1:$D$5、検索条件範囲にSheet2!$A$1:$A$5を指定し、OKをクリック。 2.Sheet2!$A$1:$A$5と一致したものが抽出されますので、この例では、2行目と3行目を 右クリックして、行の削除。 3.データ、フィルタ、すべて表示。
このような手順で削除できます。 (LOOKUP)
フィルタオプションで実行する方法です。下記のログの方法を踏襲します。 [[20050616153320]] 『複数シートで重複データの削除の仕方教えて下さい』(拓) F2へあらかじめ次の数式を入力しておきます。 =COUNTIF(Sheet2!A:A,Sheet1!A2)=0 Sheet1のA1を選択した状態で メニューのデータ>フィルタ>フィルタオプションの設定 ダイアログを表示。 次のような設定をします。 抽出先 指定した範囲 リスト範囲 (Sheet1のリスト範囲を選択:例では$A$1:$D$5) 検索条件範囲 $F$1:$F$2 抽出範囲 $G$1 上記設定をしてOKとしますとG:JへSheet2に製品番号がないリストが抜き出されます。 A B C D E F G H I J 1 製品番号 品名 材質 個数 製品番号 品名 材質 個数 2 22255 パネル P 2 FALSE 23555 ローラ F 2 3 22266 フック K 5 28687 パネル P 6 4 23555 ローラ F 2 5 28687 パネル P 6 旧リストを新リストと置き換えるなりしてください。 (みやほりん)(-_∂)b
マクロ以外ということなので,参考になりませんが マクロコードを作成してみました。(夕焼) 「マクロは、作ったことがありません」ということ ですが,出来上がったマクロコードがあれば,ただ コピーして所定の場所に貼り付けるだけです。
参考に,説明してみます。
下記のコード(Subから End sub まで)をコピーして, ワークシートの下のシート名を右クリックして, 「コードの表示」をクリックします。 すると,VBAの画面になりますので この画面の上部メニュで,挿入--->標準モジュール と クリックして表示されたシートに複写してマクロが埋め込まれ ます。(マクロの入ったEXCELワークシートになります。) マクロを実行するには 通常のワークシートで上部メニュ--->ツール--> マクロ--->マクロで先ほどの複写したマクロ(この場合test)を クリックすれば,マクロが実行されます。 興味なかったら,読み流してください。
Sub test()
lastrow2 = Worksheets(2).Cells(Rows.Count, 1).End(xlUp).Row lastrow1 = Worksheets(1).Cells(Rows.Count, 1).End(xlUp).Row For i = 1 To lastrow2 For j = lastrow1 To 2 Step -1 If Worksheets(2).Cells(i, 1) = Worksheets(1).Cells(j, 1) Then Worksheets(1).Rows(j).Delete End If Next Next
End Sub
補足
このコードを一度,埋め込めば シート1,シート2 のデータが変化しても (つまり,それぞれの末尾行が日々変化したりしても), 一切手直しせずにそのまま,マクロをクリックするだけで 結果が得られます。
LOOKUPさん、ありがとうございます。感謝いたします。
みやほりんさん、ありがとうございます。 =COUNTIF(Sheet2!A:A,Sheet1!A2)=0 ←ここでシート2を選択させるのですね? やっと理解できました。(to LOOKUPさん)
夕焼さん、ありがとうございます。
いずれの方法も希望通りのものですので、使い勝手等検討し利用させていただきます。 お付き合いくださり感謝いたします。(タツ)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.