- ベストアンサー
Exelファイルで住所データの精査をしたい
顧客データファイル(姓名、郵便番号、住所)が8ファイルほどあり、データ量が90000件ほどのデータで各ファイルに重複している顧客データを間引いて精査したいのですが、手作業でやるとかなり面倒です。 何か良い方法はありませんか? 1月中に案内状を出さないといけないのでかなり焦っています。 データのフォーマットは各ファイルごとに多少違います。 例えば、姓名の間にスペースがあるか、ないか。郵便番号の3桁目と4桁目に"-"があるか、ないか。住所の県名、市名の間にスペースがあるか、ないか。 また、一部郵便番号は『0501234』は0が省略され『501234』になっているものもあります。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
(1)アクセスかエクセルか エクセルの方しかないのでは。VBAができると、少しチェックや修正作業で手間が省けるのだが。 (2)顧客数の問題 9万であれば、エクセル1シートにはできないです。それで3万X3シートぐらいに持っていく方法はないですか。 郵便番号が違えば、別人と割り切って(同一人の転居もありえるが)、その地域分割で分割するのが良い。 3分割したそれぞれは3度同じ作業は覚悟すること。 (3)郵便番号の正常化 5桁、6桁のものは前に0,00を埋める。 (4)名前の問題 そして同一人かどうかは名前が一番の鍵を握っている。だが姓と名がくっついているのが障害になる。 名前でスペースまでが3文字を以上のものは、空白がない疑いがあるとして、チェックする。スペースも半角・全角がうるさい。 (5)半角・全角 JIS、ASC関数でどちらかに、郵便番号、氏名列ごとにそろえる (6)同一人の判定 郵便番号+名前でソートし、人間が全件目で見て同一人かどうかチェックし、同一人は1を空き列に書き込んで、その列でソートし、まとまった行を一括削除。 郵便番号、氏名以外は今回は目をつむる。時間がない。 上記の中に、関数を使うところがあるが、どんな式になるか分かるでしょうか。 難しいですね、手間がかかりますね。リスクを完全にはなくせませんね。1週間しかないしね。 しかし、手間をかけないでやる方法はないですね。 (7)関数例 取り急ぎ大雑把ですが 関数=IF(LEN(A13)>3,MID(A13,1,2)&" "&MID(A13,3,LEN(A13)-2)) で 大河原強 大河 原強 山田音二郎 山田 音二郎 になるが、上は不適当例でこんなリスクあり、人間が見つけて訂正。 関数=IF(LEN(A19)<7,TEXT(A19,"0000000"),A19)で 501234 0501234 12345 0012345
その他の回答 (3)
私なら ということで 1.氏名のブランクと、郵便番号のハイフンを削除(置換機能) 2.郵便番号-氏名の順でソート 3.郵便番号で10にSHEET分割 0000001~0999999 1000000~1999999 2000000~2999999 ・ ・ ・ 8000000~8999999 9000000~9999999 4.10分割したデータを10SHEETに分割 5.10SHEETを新規ブックで保存 6.1~4を7ファイル分行う 7.5.のブックにデータを追加し、保存 氏名の重複は、条件付書式とかで色をつければ見やすいかな。 重複データの住所を見ながら(確認しながら)、削除データを決めればよいでしょうね。
私なら ということで 1.氏名のブランクと、郵便番号のハイフンを削除(置換機能) 2.郵便番号-氏名の順でソート 3.郵便番号で10にSHEET分割 0000001~0999999 1000000~1999999 2000000~2999999 ・ ・ ・ 8000000~8999999 9000000~9999999 4.10分割したデータを10SHEETに分割 5.10SHEETを新規ブックで保存 6.1~4を7ファイル分行う 7.5.のブックにデータを追加し、保存 氏名の重複は、条件付書式とかで色をつければ見やすいかな。 重複データの住所を見ながら(確認しながら)、削除データを決めればよいでしょうね。
- ysko614
- ベストアンサー率31% (103/329)
90000件あるのであればExcelでは限界かと思います。 Accessに取り込んだ上で、クエリの集計で名前毎にグループ化してカウントして下さい。同じものであれば数が1以上になるはずですからそれを調べていけばいいと思います。 ただし、"山田 太郎"と"山田太郎"は別物としてカウントされる事はありますので、絶対ではありません。 データのフォーマットは、取り込む前に統一した方がいいと思いますが、必ずバックアップを取った上で修正して下さい。