• 締切済み

エクセルVBAで重複データの削除

A列、B列、C列・・・とデータが入っていて、B~D列の5行目から10行目が関連の有るデータのかたまりとします。 C~D列の全てのデータが重複している場合に、最初のほうのデータ(行番号が小さいほう)を残すものとして、重複データを削除したいのです。 削除するときは、 B~Dの範囲で削除する。A列等は削除しない。 削除したらデータは上に詰める。 データはソートしない。 ということをやりたいのですが、簡単に出来ますでしょうか? 良く覚えていないのですが、ネット上で色々探してみても、必ずソートしている気がしたので、ソートしない方法が知りたいのですが。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

方法として (1)ソート法(ソート後直前比較法。ソートする場合は下記いずれもこの方法。) (2)データを他シートのコピーしてソート。そちらで作業。 (3)配列にデータを入れ配列でソートする (4)ソートしないで自分以外の総てと比較して同じかどうかチェックする。 など考えられますが、(1)が一番ロジックが簡単(と言うことはステップ数が少ない)見こみ。 >必ずソートしている気がしたので、ソートしない方法が知りたいのですが。 その理由がわからない。敢えてそこまで考えるクラスの方なら、自力で色々大筋のやり方は考えついて、細部の質問になるような気がしますが。

VitaminBB
質問者

お礼

回答ありがとうございます。 そう簡単には出来ないということですね。

関連するQ&A

  • 重複データの削除

    お世話になります。 現在、仕事でお客様のデータ(5万件くらい)を扱っています。 しかしデータをエクセルに取り込むシステムに難があり、同じお客様のデータを重複して取り込んでしまうことがあります。 そこで質問ですが、約5万件あるデータの中から効率よく重複データを削除する方法はありますか? 懸念事項は、同姓同名の方は削除してはいけないという点です。 データ項目は「名前」「住所」「生年月日」「性別」とあるので、 同姓同名でも生年月日や住所で判定することができます。 ちなみに私の考えは、 A列に名前、B列に生年月日とすると・・・ 1)ソート:優先順位はA列⇒B列 2)C列にIF(A1=A2,"重複","OK")として行方向へコピー   D列にIF(B1=B2,"重複","OK")として行方向へコピー   E列にIF(AND(IF(C1="重複",D1="重複")=TRUE,"重複","OK")として行方向へコピー 3)E列で"重複"でフィルタリングし、フィルタされた行の削除 スマートではないですが、私の知識では精一杯です。 何かスマートな方法はないものでしょうか? よろしくお願いいたします。

  • Excel2003で重複したデータを削除したい

    Excel2003で重複したデータを削除する方法を教えて下さい。 A・B・C・Dの列の全てが重複するデータを削除したいのですが、可能ですか?AとB列は重複するけど、CやDのデータは重複していなければ、残しておきたいです。 以下イメージです。 行/列  A   B    C    D 1    なす  商店  100円  3/4  2    なす  商店  200円  3/2 3    なす  商店  200円  3/2 ------------------------------------- 以下、重複データ削除後のイメージ。 1    なす  商店  100円  3/4  2    なす  商店  200円  3/2

  • VBAで重複していない行を削除したいです。

    初めてgoo質問を使います。 sheet1とsheet2の1列目と2列目で重複していない行を sheet2から削除したいです。 例えば、 Aの列に番号?、Bの列に数字 sheet1 A B CDEF 1 番号A 1 2 番号A 2  3 番号A 3 4 番号C 1 5 番号C 2 6 番号F 6 7 番号F 7 8 番号F 8 9 番号F 9 10 番号F 10 sheet2 A B CDEF 1 番号A 1 2 番号A 2  3 番号A 3 4 番号B 1 5 番号B 2 6 番号B 3 7 番号C 1 8 番号C 2 9 番号D 8 10 番号D 10 があったとして、上記を下記のようにしたいです。 sheet2 A B CDEF 1 番号A 1 2 番号A 2  3 番号A 3 4 番号C 1 5 番号C 2 6 番号F 6 7 番号F 7 8 番号F 8 9 番号F 9 10 番号F 10 CDEFの列にはsheet1とsheet2で違うデータが入っています。 sheet2から重複していない行を削除したいです。 宜しくお願いします。

  • エクセルまたはVBAで重複行を削除

    例えば、 A B 1 1 a 2 2 b 3 3 c 4 4 d 5 4 d 6 5 e 7 6 g 8 6 g といった表があるとします。 A列をキーに、昇順にされた一覧表です。 ここで番号が重複している行、この例では4行目と5行目、7行目と8行目がそうです。 こういった重複した行を検索して、行削除したいのですがどんな方法が可能でしょうか? 最終的にはVBAでのイベントになるでしょうが、それ以前にエクセルで前準備などしておくようなことは必要でしょうか? 表自体はかなり膨大な量のデータベースです。 よろしくお願いします。

  • エクセルのマクロで重複データの削除

    横17列、縦、約1000行の表があります。 4行目が項目で、5行目以降は次のように並んでいます。 A列(日付)、B列~H列(各データ) I列(契約番号)J列~Q列(各データ) 縦の並び順は、ばらばらで、日付順ではありません。しかも結構重複があります。 そこで、I列の商品番号をキーにして、重複をチェックし、重複しているものは、日付が新しいものを生かし、古い方は削除しようと思います。 しかし、手作業でやるにはあまりに多すぎるため、出来ればマクロでやりたいのですが、このように高度なものは、わたしが出来るマクロの記録程度では手におえそうもありません。 どのようにやったらよいのかどなたかお教え願えませんでしょうか?

  • 【エクセル】データの重複チェック

    次のようなデータが入力されているとします。 A列/B列/C列/D列/E列/F列 1行:都道府県/市区町村/data1/check1/data2/check2 2行:東京/新宿/1/""/1/"" 3行:東京/新宿/2/""/2/"重複" 4行:東京/新宿/3/""/3/"" 5行:東京/渋谷/1/重複/4/"" 6行:東京/渋谷/2/""/5/"" 7行:東京/渋谷/3/""/6/"" 8行:東京/渋谷/4/""/2/"重複" 9行:東京/渋谷/1/重複/7/"" ここで、check1は、 「都道府県」のグループでdata1に重複があれば、「重複」表示をさせます。 また、check2は、 「市区町村」のグループでdata2に重複があれば、「重複」表示をさせます。 例えば、 セルD2=IF(COUNTIF($C$2:$C$4,$C$2:$C$4)>1,"重複","") セルF2=IF(COUNTIF($E$2:$E$9,$E$2:$E$9)>1,"重複","") というように関数を入力して、2行目以下にコピペすればいいのですが、 実際は1万行以上のデータがあり、「都道府県」「市区町村」も多くのグループがあるため いちいち範囲を指定するのも大変です。 そこで、上記関数のように手動で範囲を指定しなくても、 自動で範囲指定をして重複チェックができる良い方法があれば教えてください。 できれば関数がいいのですが、VBAでも構いません。 ご教授のほど、よろしくお願いします。

  • エクセルの重複の削除

    下記のようなデータがあります。 19行目から製品番号が重複しているのですが、「重複の削除」では削除されません。 そこでNo 1-18までを削除して、「重複の削除」を行うと削除することができます。 なぜ1-18があると削除できないのでしょうか。 下のデータをエクセルに貼り付けても自分のPCでは再現します。 よろしくお願いします。 No , 製品番号 , 日付 1 , 0203 , 2003/1/2 2 , 203 , 2003/1/2 3 , 00303 , 2003/1/3 4 , 303 , 2003/1/3 5 , 404 , 2004/1/4 6 , 404 , 2004/1/4 7 , 00603 , 2003/1/6 8 , 603 , 2003/1/6 9 , 00703 , 2003/1/7 10 , 703 , 2003/1/7 11 , 00803 , 2003/1/8 12 , 803 , 2003/1/8 13 , 00903 , 2003/1/9 14 , 903 , 2003/1/9 15 , 01003 , 2003/1/10 16 , 1003 , 2003/1/10 17 , 01103 , 2003/1/11 18 , 1103 , 2003/1/11 19 , 18006D2 , 2006/6/29 20 , 18006D2 , 2006/6/29 21 , 18904D , 2004/7/7 22 , 18904D , 2004/7/7 23 , 18905A2 , 2005/7/8 24 , 18905A2 , 2005/7/8 25 , 19405D1 , 2005/7/13 26 , 19405D1 , 2005/7/13 27 , 19407D2 , 2007/7/13 28 , 19407D2 , 2007/7/13 29 , 19506D2 , 2006/7/14 30 , 19506D2 , 2006/7/14 31 , 19704D , 2004/7/15 32 , 19704D , 2004/7/15 33 , 2004D , 2004/1/20 34 , 2004D , 2004/1/20 35 , 20206A2 , 2006/7/21 36 , 20206A2 , 2006/7/21

  • エクセルデータの完全削除

    エクセル2000において例えばA列に・・・ A B C D A と並んでいた場合、重複データを完全に削除 する方法はないでしょうか?つまり削除後は・・・ B C D のみが残る方法です。過去ログを参照 しましたが、重複データの片方を残す方法ばかりで 大変困っています。。

  • Excel 2007 重複データのチェックについて

    Excel 2007 重複データのチェックについて A列にあるデータ(約100件)で重複している値がある 行についてB列にフラグをつけます。 やりたいことはどの行とどの行が重複しているのかを すぐに分るようにしたいです。 添付画像のように重複している行に番号をつけていくことは可能でしょうか。 番号は1から順番に増えていきます。 自分は下記を考えましたが、これでは重複している行に「重複データ」と入る だけでわかりづらいです。 =IF(COUNTIF($A$2:A2,A2)>1,”重複データ”,”○”) よろしくお願いいたします。

  • Excelで、重複データを一括で削除する方法

    お世話になっております。 Excelで、重複データを一括で削除する方法について 300列ほどあるデータがあります。 (行数は、各列に30行ほどです) 各列には重複するデータがあります。これを削除したく。 なお、各列(隣の列)は、関連性がありません。 よって、複数の列を参照して重複データを削除する必要はなく A列内の重複データ、B列の重複データをそれぞれ削除したいのですが、 フィルタオプションからの重複データを無視する、や、重複データの削除 機能では、1列ずつ実行することで可能ですが、300列以上あるので 現実的ではありません。 そこで、一括で各列の重複データを削除する方法を教えてください。 ※なお、列は300ほどあるため、作業用(countifで重複をピックアップした後、フィルタして 削除など)の方法は、列分つくるのは現実的ではないため、それ以外の方法はないでしょうか。 よろしくお願いします。

専門家に質問してみよう