どうも、くまおやぢです。
「A列の名簿とB列の名簿、同じ人が入ってないか確認して」
——こんな依頼、受けたことありませんか。
100件くらいなら目視でなんとかなりそうな気がしますが、300件・500件になったら無理です。しかも厄介なのが「田中 太郎」と「田中太郎」みたいに、見た目はほぼ同じなのにExcelが別物と判定するケース。これで重複を見落としたり、逆に別人を重複と誤判定したりが起きます。
この記事では、Excelで名前の重複を正確に確認するための方法を、基本の関数から表記ゆれ対策・実務で使える応用パターンまで解説します。
⚡ 急いでいる人へ|目的別の早見表
| やりたいこと | 方法 |
|---|---|
| A列の名前がB列にあるか確認したい | =IF(COUNTIF(B:B,A2)>0,"重複あり","なし") |
| 重複セルを色で目立たせたい | 条件付き書式 |
| スペースや全角半角のズレも含めて正確に比較したい | 正規化してから COUNTIF |
| 同姓同名がいるので名前だけで判定したくない | COUNTIFS で複合キー判定 |
| 重複行を一気に消したい | 「重複の削除」(ただし名簿には非推奨) |
この記事でできること
- COUNTIF・IF関数で「A列の名前がB列にあるか」を一発判定する
- 条件付き書式で重複セルを色で見える化する
- 「田中 太郎」と「田中太郎」を同じとみなして比較する正規化のやり方
- 同姓同名問題を複合キー(氏名+生年月日など)で解決する
- 「重複の削除」機能を使っていい場面・使ってはいけない場面の判断基準
01. なぜ名前の重複チェックは難しいのか
Excelで名前を比較するとき、「見た目が同じ」と「Excelが同じと判定する」は別の話です。
Excelは文字を完全一致で判定します。1文字でも違えば別物扱いです。
Excelが「別物」と判定する典型パターン
| 見た目 | 実際の違い | 一致するか |
|---|---|---|
| 田中 太郎 / 田中太郎 | スペースの有無 | ✗ 一致しない |
| タナカ / タナカ | 全角 vs 半角カタカナ | ✗ 一致しない |
| 齋藤 / 斉藤 | 旧字体 vs 新字体 | ✗ 一致しない |
| 田中太郎 / 田中太郎 | 末尾に全角スペース | ✗ 一致しない |
| 田中太郎 / 田中太郎 | まったく同じ | ○ 一致する |
この「見た目は同じでもExcelには別物」現象を表記ゆれといいます。名前の重複チェックでミスが起きるほとんどの原因が、この表記ゆれです。
だから重複チェックは「とりあえずCOUNTIF」だけでは足りないケースが多い。表記ゆれをどう扱うかまで設計しないと、見落としと誤判定が残ります。
この記事では、まず基本の関数を押さえてから、表記ゆれを吸収した上での比較まで段階的に進みます。
02. 基本|COUNTIFでA列の名前がB列にあるか判定する
基本の式
最もシンプルな重複チェックはこれです。
C列に以下の式を入れて、下にコピーします。
=IF(COUNTIF(B:B, A2) > 0, "重複あり", "なし")
式の意味:
COUNTIF(B:B, A2):A2の値がB列に何件あるかを数える> 0:1件以上あれば"重複あり"/"なし":結果を表示
A列の各名前に対して「B列に存在するかどうか」を自動で判定します。
逆方向も確認する
上の式はA列→B列方向の確認です。B列の名前がA列にあるかも確認したい場合は、D列に逆の式を入れます。
=IF(COUNTIF(A:A, B2) > 0, "重複あり", "なし")
両方向を確認することで、片方にしか存在しない名前も拾えます。
同じ列内の重複を数える
1つの列の中で重複している名前を調べたい場合はこちら。
=COUNTIF(A:A, A2)
この結果が「2以上」なら、その名前は列内に複数存在しています。
=IF(COUNTIF(A:A, A2) > 1, "重複", "ユニーク")
03. 条件付き書式で重複を色で見える化する
関数で判定列を作らなくても、条件付き書式を使えば重複しているセルを直接色付けできます。視覚的に一目で分かるので、確認作業に向いています。
手順:A列の名前がB列にもある場合に色を付ける
- A列のデータ範囲を選択する(例:A2:A100)
- 「ホーム」タブ →「条件付き書式」→「新しいルール」を選ぶ
- 「数式を使用して、書式設定するセルを決定」を選ぶ
- 数式に以下を入力する
=COUNTIF($B:$B, A2) > 0
- 「書式」→「塗りつぶし」で色を選ぶ(例:黄色)
- 「OK」で完了
これで、A列の中でB列にも存在する名前のセルが自動で色付けされます。
同じ列内の重複に色を付ける
「A列の中で2回以上出てくる名前に色を付けたい」場合は、数式を変えます。
A列を選択した状態で:
=COUNTIF($A:$A, A2) > 1
これで列内に複数存在するすべての行が色付けされます。
💡 条件付き書式 vs 判定列、どちらを使うか
「ひと目で確認したいだけ」なら条件付き書式が速い。「判定結果をフィルターして作業したい」「ログとして残したい」なら判定列(COUNTIF+IF)が向いている。目的で使い分けましょう。
04. 表記ゆれを吸収した比較|正規化してからCOUNTIFする
ここが、基本の重複チェックとの一番の差です。
「田中 太郎」と「田中太郎」はCOUNTIFでは一致しません。でも人間には同じ人です。これを正確に判定するには、**比較する前にデータを正規化(統一した形に整える)**する必要があります。
正規化に使う関数
| 関数 | 何を除去・変換するか | 使いどころ |
|---|---|---|
TRIM | 先頭・末尾・連続した半角スペースを除去 | 名前の前後のスペース除去 |
SUBSTITUTE | 指定した文字を別の文字に置き換える | 全角スペース除去、記号統一 |
CLEAN | 改行・タブなど見えない制御文字を除去 | コピペ由来の汚れを落とす |
ASC | 全角英数字・カタカナを半角に変換 | 半角に統一したいとき |
JIS | 半角英数字・カタカナを全角に変換 | 全角に統一したいとき |
基本の正規化式
スペースと全角スペースを除去してから比較したい場合の式です。
作業列(例:E列)にA列を正規化した値を作ります:
=TRIM(SUBSTITUTE(SUBSTITUTE(CLEAN(A2)," "," ")," "," "))
同様にF列にB列の正規化版を作り、正規化した列同士で比較します:
=IF(COUNTIF($F:$F, E2) > 0, "重複あり", "なし")
実践例:「田中 太郎」と「田中太郎」を同じと判定する
データの状態:
- A2:
田中 太郎(名前の間に半角スペース) - B3:
田中太郎(スペースなし)
通常のCOUNTIF:
=COUNTIF(B:B, A2) → 0(一致なし)
→ スペースの有無で別物扱いになる
正規化後のCOUNTIF:
まずE列にA2の正規化版:
=SUBSTITUTE(TRIM(A2)," ","")
→ "田中太郎"
F列にB3の正規化版:
=SUBSTITUTE(TRIM(B3)," ","")
→ "田中太郎"
比較:
=COUNTIF($F:$F, E2) → 1(一致あり)
→ スペースを除去した上で比較するので、正しく一致する
全角・半角を統一してから比較する
カタカナの全角・半角が混在している場合は JIS または ASC を加えます。
全角に統一してから比較する場合:
=JIS(TRIM(CLEAN(A2)))
半角に統一してから比較する場合:
=ASC(TRIM(CLEAN(A2)))
どちらに統一するかは、名簿のルールに合わせて決めてください。重要なのは「比較する両方のデータを同じルールで正規化する」ことです。
⚠️ 旧字体・異体字の問題
「齋藤」「齐藤」「斉藤」のような異体字・旧字体は、関数では自動変換できません。これらを統一するには、SUBSTITUTE関数で個別に変換するか、入力時にルールを設けるしかありません。名簿で旧字体が多い場合は、フリガナ(PHONETIC)での比較も検討価値があります。
05. 同姓同名問題|複合キーで正確に判定する
重複チェックで一番危険なのは、同姓同名の別人を「重複あり」と誤判定してしまうケースです。
「田中太郎」が2人いたとき、名前だけで重複チェックしていたら、別人を削除してしまうリスクがあります。
COUNTIFSで複数条件を組み合わせる
氏名だけでなく、生年月日・社員番号・メールアドレスなど、別の情報と組み合わせて判定することで精度が上がります。
例:A列の氏名とC列の生年月日の組み合わせが、B列・D列に存在するか確認する
=IF(COUNTIFS(B:B, A2, D:D, C2) > 0, "重複あり", "なし")
COUNTIFSのルール:
- 条件を複数指定できる
- すべての条件を同時に満たす行の件数を返す
- 「氏名が一致 AND 生年月日も一致」という判定ができる
実用的な複合キーの選び方
| 複合キーの組み合わせ | 精度 | 注意点 |
|---|---|---|
| 氏名のみ | 低 | 同姓同名の別人を誤判定する |
| 氏名+生年月日 | 高 | 生年月日が入力されている場合に有効 |
| 氏名+メールアドレス | 非常に高 | メールが重複している方が問題なケースも |
| 社員番号のみ | 最高 | IDがあれば氏名は不要なくらい強い |
| 氏名+電話番号 | 高 | 電話番号が変わることを考慮する |
名簿にIDや社員番号があるなら、そちらを判定キーにするのが一番確実です。氏名は変わることがあるし、同姓同名もいる。IDは揺れません。
キー列を作って比較しやすくする工夫
複合キーを1つの列に結合して比較するテクニックもあります。
=A2 & "_" & C2
例:「田中太郎_19800101」という結合キーを作り、COUNTIF で比較する。
COUNTIFS でも同じことができますが、結合キー方式にしておくと条件付き書式にも使いやすくなります。
06. 「重複の削除」機能はいつ使う?いつ使わない?
Excelには「データ」タブに「重複の削除」ボタンがあります。便利そうに見えますが、名簿への使用は基本的に非推奨です。
なぜ名簿では使わない方がいいか
- 同姓同名の別人を巻き込んで削除する可能性がある
- 削除されたデータはCtrl+Zでしか戻せない(保存後は戻せない)
- 「どの行を残してどの行を消したか」の記録が残らない
名簿のような重要データで「取り返しのつかない削除」が起きたとき、影響は大きいです。
重複の削除を使っていい場面
逆に使っていい場面もあります。
- システムから重複出力された完全に同一のレコードを除去したい
- 元データのコピーが残っていて、いつでも戻せる状態
- IDや番号など、完全に一致するものだけを判定キーにしている
- 1件のデータが何行にも重複している大量データを整理したい
使う前の必須手順:
- 元データを別シートまたは別ファイルにコピーしてバックアップを取る
- 削除後に件数を確認する(処理前と処理後の行数をメモ)
- 削除されたデータが意図通りかをバックアップと照合する
重複の削除の操作手順
- 対象のデータ範囲を選択する
- 「データ」タブ →「重複の削除」をクリック
- 判定に使う列にチェックを入れる(氏名だけ、または複数列の組み合わせ)
- 「OK」をクリック
07. よくある詰まりポイントと対処法
「COUNTIF で 0 なのに明らかに同じ名前がある」
表記ゆれが原因です。次の順番で確認します。
- 先頭・末尾のスペースがないか → TRIM で確認
- 全角・半角が混ざっていないか → LEN 関数で文字数を比較
- 見えない文字が混入していないか → CLEAN を適用してから再比較
- 記号・括弧の種類が違わないか
特定できない場合は、比較したい2つのセルを =A2=B3 で直接比較してみてください。FALSE が返れば確実に一致していないので、TRIM・CLEAN を通した値で再比較します。
「COUNTIF で重複ありなのに本当は別人」
同姓同名のケースです。05章の複合キー判定(COUNTIFS)を使って、別の情報と組み合わせて再判定してください。
「条件付き書式を設定したのに色が付かない」
数式の参照範囲を確認してください。
=COUNTIF($B:$B, A2) > 0
B列側は絶対参照($B:$B)にして、A列側は相対参照(A2)のままにするのが正しい形です。両方絶対参照や両方相対参照にすると、意図通りに動かないことがあります。
「TRIM を使ったのにまだ一致しない」
TRIM が除去できるのは半角スペースだけです。全角スペース( )は TRIM では除去されません。
=TRIM(SUBSTITUTE(A2, " ", " "))
このように SUBSTITUTE で全角スペースを半角スペースに変換してから TRIM を適用してください。
08. 実務で使える式のまとめ
よく使うパターンを一覧にします。そのままコピーして使えます。
A列がB列に存在するか確認する(基本)
=IF(COUNTIF(B:B, A2) > 0, "重複あり", "なし")
スペースを除去してから確認する(表記ゆれ対策)
=IF(COUNTIF(B:B, TRIM(SUBSTITUTE(A2," "," "))) > 0, "重複あり", "なし")
氏名+生年月日の複合キーで確認する(同姓同名対策)
=IF(COUNTIFS(B:B, A2, D:D, C2) > 0, "重複あり", "なし")
同じ列内の重複を数える
=COUNTIF(A:A, A2)
同じ列内で最初の出現か2回目以降かを判定する
=IF(COUNTIF(A$2:A2, A2) > 1, "重複(2件目以降)", "初出")
このように A$2:A2 と範囲を行ごとに広げる形式にすると、「上から数えて初めて出てくる行」なのか「すでに上に同じ値がある行」なのかを区別できます。重複を消したいときに「どちらを残すか」の判断に使えます。
09. まとめ|重複チェックは「正確に比較できる状態にする」が9割
Excelで名前の重複チェックをするとき、やることは3つです。
- 正規化する:比較する前にTRIM・CLEAN・SUBSTITUTE で文字を整える
- 適切な関数で比較する:COUNTIF(単一条件)またはCOUNTIFS(複合条件)
- 同姓同名を考慮する:名前だけでなく、IDや生年月日と組み合わせて判定する
「重複ありと出てるのに別人」「重複なしと出てるのに同じ人」——このどちらも、たいてい正規化と複合キーで解決できます。
用途に合わせた使い分けはこうです。
| 状況 | おすすめの方法 |
|---|---|
| さっと目視で確認したい | 条件付き書式 |
| 判定結果を残してフィルターしたい | COUNTIF + IF で判定列を作る |
| 表記ゆれが多いデータを比較したい | 正規化してからCOUNTIF |
| 同姓同名の可能性がある | COUNTIFS で複合キー判定 |
| 大量の完全一致の重複を一括削除したい | 重複の削除(バックアップ必須) |
重複チェックは「関数を知っているか」より「比較できる状態に整えてから使えるか」の方が重要です。この記事の手順を使えば、表記ゆれと同姓同名を意識した、精度の高い重複チェックができます。


コメント