
以下の様なレコード形式のCSVがあります。
A列,・・・AA列,
NO,日付,時間,姓1,名1,住所1,住所2,住所3,住所4,姓2,名2,姓3,名3,・・・,姓10,名10
これが1万行以上あるのですが、
「姓名」での重複チェックをするにはどうしたら良いでしょうか?
横でも縦でも斜めでも、つまり1レコード中の重複も、レコード間の重複も検知したいです。
No00001,姓名1
・
・
・
No00001,姓名10
No00002,姓名1
・
・
・
No00002,姓名10
・
・
・
No10000,姓名10
と全て縦1列に並べてチェックするようなイメージですが、
具体的にその方法がベターなのか悩んでます。
また、住所での重複もしなければいけません。
CSVは日々最新データが届く可能性があり、本当はCSVを上書きするだけで結果が更新されると運用が楽なのですが、毎回手動作業も仕方ないと思っています。
良い方法のアドバイス頂けると幸いです。
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
こんにちは
>「姓名」での重複チェックをするにはどうしたら良いでしょうか?
データ数が10×1万=10万件くらいあるので、チェックした結果をどうするのかの方が問題のような気がしますけれど、とりあえずチェックさえできれば良いものとして・・・
以下、ひとつのアイデアですが・・
事前に雛型のシートを作成しておいて、そこにCSVを流し込めば良いのではないでしょうか?
比較するのには、「姓 名」の一覧を作成しておいて、その中で重複チェックをするのが簡単そうに思われます。
1)雛型シートのAB列(=他の列でも良い)に「姓 名」(= 姓 & " " & 名 )を抜き出すように関数を設定しておきます。
2)AB列内の重複チェックをAC列あるいは、AB列の「条件付き書式」などに設定しておきます。
以上で、雛型シートは完成で、このシートのA:AA列にデータを流し込めば、自動的にチェックができるという考え方です。
データが大量にありそうなので、エクセルの計算に多少時間がかかるかもしれませんけれど・・
具体例としては、
1)に関しては、AB1セルに
=TEXTJOIN(" ",1,OFFSET($A$1,INT((ROW()-1)/10),MOD(ROW()-1,10)*2+7-(MOD(ROW()-1,10)=0)*4,,2))
の式を入力し、あらかじめ10万行までフィルコピーしておきます。
2)に関しては、AB列に対して、COUNTIFなどで>1であれば重複と判断すればよいでしょう。
ただし、元データが空白セルの場合、AB列も空白セルとなりますので、空白セルは重複チェックの対象にしないようにしておいた方が宜しいでしょう。
(これにより、データがない状態でも重複の認識が発生することを防げます)
No.4
- 回答日時:
こんにちは
重複データのチェックとありますが、どのような結果をお望みなのでしょうか?
重複データを
行(グループ)を削除して上に詰める
セルに色を付ける(#3様指摘の通り意味無いかな)
別シートに抜き出す(元データから削除)
別シートに書き出す(元をいじらず)
(グループは関連データ)
CSVファイルをQueryTables.Addで必要カラムを抽出して
Scripting.Dictionary や RemoveDuplicatesなどで
チェックや削除する方法や
ADODB.Stream などで抽出段階で重複を排除する方法も有か?
No.3
- 回答日時:
「重複チェック」した結果は、どのような状態になるのを希望されているのでしょう。
(姓名&住所)を1データとして、1行に4データ、10000行あるとして、4万データ中には、82種189データが重複状態で存在するとして、
色分けで重複表示は無意味そうですし、、、
表中に1つの重複もない状態になるように、82種189データから107データを削除して、39,893データになるようにするのだとして、重複データの中のどのデータを残すのでしょうか。 また、「1レコード中の重複も、レコード間の重複も」というのは、1行の中の4データ中で、第二、第三データが重複していた場合、第三データを削除するだけなのでしょうか、第四データを、削除した第三データの位置に置き直す必要はあるのでしょうか。
仮に、3456行目の4データは、どれもが、2000~2500行の間にあるデータの重複である場合には、3456行目の「NO,日付,時間」のデータはそのまま残すのでしょうか。
やりたい、希望のイメージがハッキリしないと、マクロの使用法が決まらないと思います。
また、「CSVは日々最新データが届く可能性があり」
というのは、以前のデータの全てを含む書き換え版・訂正&追補版ということでしょうか。 そうであるなら、日々に最新のCSVを対象にしてやる他はないでしょう。
(姓1,名1,住所1,住所2,住所3,住所4)の1セットは、「=CONCAT(」で1つのデータにして、AC、AD、AE、AFの行に4つ並べ、それを対象にして、重複をあたれば良いと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
男性がある女の人に下の名前何...
-
自分の会社の社員にMr.をつ...
-
姓名の表記法について
-
結婚するときに姓を決める時に...
-
Excelの並べ替えで濁点・半濁点...
-
「氏」の使い方
-
名前とはなぜ前がつくのか?
-
自分の「姓」は気に入っていま...
-
Accessのフィールド結合について
-
外国人の名前に使われる”・”や”...
-
ご祝儀袋に札に苗字だけは非常識?
-
苗字についての質問です
-
日本史・連と品部の違い
-
もし、夫婦別姓の法律ができた...
-
Accessで重複データを入力でき...
-
外国人のイニシャル
-
名字のせいでよく在日韓国人と...
-
素朴な疑問なんですが。 アンケ...
-
漢字1字で読み方が3文字の名前
-
性格の悪い女性の名前
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
姓名の表記法について
-
男性がある女の人に下の名前何...
-
名前とはなぜ前がつくのか?
-
自分の会社の社員にMr.をつ...
-
「氏」の使い方
-
結婚するときに姓を決める時に...
-
Excelの並べ替えで濁点・半濁点...
-
もし、夫婦別姓の法律ができた...
-
外国人の名前に使われる”・”や”...
-
Accessで重複データを入力でき...
-
Accessのフィールド結合について
-
【女性へ質問】女性の友だち同...
-
名字のせいでよく在日韓国人と...
-
漫画や教科書などでよく見かけ...
-
中国の姓名
-
竹取物語の翁の名前の読み方
-
ご祝儀袋に札に苗字だけは非常識?
-
姓名のローマ字表記が、2020.1....
-
外国では結婚したら姓が変わり...
-
外国人のイニシャル
おすすめ情報
皆さま
ゴールが曖昧な中、たくさんのアイデア、アドバイス、ありがとうございます。
これから始まりそうな作業なので不明確ですみません。
同一人物は3回まで出現OKですが、それ以上の出現はNGとして抽出したいという事になりました。
どんな表示の仕方にするかまだイメージが出来てませんが、
途中から4回までOKとルールが変わっても対応できるように、重複回数が分かるようにして、
見たい人が自由にオートフィルタ等で表示できるようにすれば良いかな、と思ってます。