- ベストアンサー
名簿データベースの重複チェック
2つの名簿データベースがあります。(約3千件) 元はAデータベースで、これに随時、追加・修正を 加えたBデータベースがあります。 このAとBそれぞれに、重複した名簿データが含まれている 可能性があります。 これを重複がないかチェックし、あった場合は BデータベースのB列に "重複" 表示させる方法を 教えてください。 希望結果表示イメージは次ぎのとおりです。 Aデータベース Bデータベース A列 B列・・・ A列 B列・・・ Z列 aaa aaa bbb bbb 重複 bbc bbd ccc ccc ddd bbc eee eee fff bbb 重複 希望1:Z列に関数を埋め込み表示 希望2:VBでループ処理 希望3:何でもいいです
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
多分、Excelなんでしょうね。 データベースA、BってのはExcelのシートなのだとして、そのA列の100行までデータが入ってると仮定します。このとき、A列を昇順でソートされているものとします。 そして、シート名「データベースB」のZ1に以下の式を入力して、下までコピーでどうでしょうか。 =IF(ISERROR(VLOOKUP(A1,データベースA!A$1$:A$100$,1,FALSE)),"","重複")
その他の回答 (3)
- yama_x
- ベストアンサー率20% (188/940)
データベースとありますが、勝手にexcelと解釈して 話を進めます。 1.AデータベースのC列の全ての行に「重複」と入力 2.BデータベースのZ列の1行目に以下の式を入力 =VLOOKUP(Z1,[Aデータベース.xls]Sheet名!$A:$C,3,FALSE) 3.Z列の全行にコピー 重複したものは「重複」、重複しないものは「#N/A」が 表示されます。 「#N/A」を消す方法もあったと思うのですが、 とりあえず思い出せないので省きます。 <応用> Aデータベースが加工できないのであれば、 別にどの列を表示させてもよいと思います。 とにかく「#N/A」がでたものが重複していない 行です。 <欠点> vlookupでは半角・全角は違うものとして 扱われます。A列の表記が全く同一でないと 重複とみなされません。 asc、jis、trim等の関数を使って 調整が必要かもしれません。 (各関数についての詳細はHelpを見てください)
- madman
- ベストアンサー率24% (612/2465)
Excelとすれば。 =IF(A1<>"",IF(A1=VLOOKUP(A1,[シートA.xls]Sheet1!$A$1:$A$100,1,TRUE),"重複",""),"") をシートBのZ1に記述しましょう。 並んでいる順は不動でかまいません。$A1:$A100に実際にデータに入っている範囲を指定してください。
- kazuhiko5681
- ベストアンサー率49% (79/159)
初めまして。使用しているアプリケーションはアクセスですか?それともエクセルですか?これがわからないと処理の方法が違うのでお答えすることができません。どちらで処理をされたいのかお知らせ下さい。
お礼
本当は、関数かVBできれいにやりたかったのですが、時間がなくて、それぞれのDBをソートして上下関係でチェックを入れることで解決させました。 ある程度の数(重複は約30件でした)に絞ってしまいましたので、とりあえず目で見て手直しです。 もう少し皆さんのご意見を伺いたい気もするのですが、一旦閉めさせていただきます。
補足
#1~#4の皆さん、すばやいご回答、ありがとうございます。 データベースはエクセル上です。 ご回答を試してみましたが、いずれもうまくいきませんでした。全て「重複」と表示されたり、空白だったり。 当方の説明がまずく、申し訳ありません。シート1にAデータベース、シート2にBデータベースです。いずれも構造(項目名)は同じです。 AとBは基本的に同じ名簿で、双方に1名づつ名前があれば「OK」です。両方のデータベースをざっと一覧してみると、特にBに重複が見られます。 つまり、今後はBを使用することになりますが、Aに載っている名簿で漏れがないか、Bの中に2重に掲載されたものがないかのチェックをしたいのです。 最初は、VBでBの1件目とAの1件目~3000件目をチェックし、次いでBの1件目とBの2~3000件をそれぞれ重複チェックするものを作成しようとしたのですが、時間がなく挫折気味です。 できたとしても、3千×3千=9百万回の計算をPCに強いることになり、結構な時間がかかりそうで、作成を思いとどまっています。 なお、半角・全角・空白等の問題は解消済です。 もう少し頑張ってみますが、ご支援を引き続きお願いいたします。