顧客リストの名寄せ(同じ相手のデータを1件にまとめる作業)は、「重複の削除」ボタンから始めると失敗します。
Excelの照合は1文字単位の完全一致で、「株式会社モグラ商事」と「(株)モグラ商事」は別のデータだからです。
先に表記のゆれを直し、消すのは最後。順番はこうです。
名寄せの手順(この順番でやる)
- 原本のシートをコピーする(元データは触らない)
- スペースを消す
- 全角と半角をそろえる
- 記号と「株式会社」の書き方をそろえる
- 照合用のキー(同じ相手とみなす目印の列)を作る
- 重複を数えて印を付ける(まだ消さない)
- どの行を残すか、目で見て決める
- 最後に「重複の削除」を使う
式はすべて、Excel 16.0(ビルド 20326.20100)で実際に入力して確認しています。
古くからある関数が中心なので、バージョンをほとんど選びません。
この記事に出てくる用語
- 表記ゆれ … 「(株)」と「株式会社」など、同じものの書き方が複数あること
- 前処理 … 照合の前に、データの書き方をそろえておく作業(手順1〜3がそれ)
- 作業列 … 元の列を書き換えず、加工結果を入れる右側の列
- 複合キー … 名前+電話番号のように項目を繋いだ、同一判定の目印
前処理を飛ばすと何が起きるか
Excelにとって表記ゆれは「別の文字列」で、全角スペース1個でも別物です。
この状態で「重複の削除」を押しても、偶然1文字残らず同じに入力されていた行しか消えません。
削除件数が表示されるので終わったように見えますが、ゆれた重複はそのまま残ります。
「消えたように見えて残っている」のが、名寄せでいちばん多い失敗です。
手順:そろえて、数えて、最後に消す
例として、A列に会社名、B列に電話番号が入ったリストを使います。
加工はすべて右側の作業列で行い、1つの手順につき1列使います。
失敗したとき、その列だけ直せばよいからです。
自分のリストに合わせて読み替える
- 作業列は空いている列に置きます。C・D列にもデータがあるなら、E列から始め、後ろの列も同じ数だけずらします(下の表)
- 式の
A2は会社名の列、B2は電話番号の列の意味です。自分の列に置き換えます
| 記事の例 | 入るもの | E列始まりなら |
|---|---|---|
| D列 | 手順1: スペース除去 | E列 |
| E列 | 手順2: 全角半角 | F列 |
| F列 | 手順3: 記号 | G列 |
| G列 | 手順4: 電話番号の数字化 | H列 |
| H列 | 手順4: 照合用のキー | I列 |
| I列 | 手順5: 重複の印 | J列 |
式の中の列の文字も同様です。手順4の =F2&"|"&G2 は、E列始まりなら =G2&"|"&H2 です。
0. 原本のシートをコピーしてから始める
シート見出しを右クリックして「移動またはコピー」でコピーを作り、作業はコピー側だけで行います。
名寄せの失敗は、行を消して保存した後に気づくことが多い作業です。
「戻る元」が残っていないと、リストを作り直す以外の復旧手段がなくなります。
作業列の式を「値の貼り付け」で固定するのは、結果を目で確認した後にします。
先に固定すると、式を直してやり直す道が消えます。
1. スペースを消す
D2に次の式を入れて、下までコピーします。
式が文字のまま出るなら数式が計算されないときへ。
=SUBSTITUTE(SUBSTITUTE(A2," ","")," ","")
SUBSTITUTEは指定した文字を置き換える関数で、ここでは半角と全角のスペースを空文字にして消しています。
TRIM(前後のスペースを消し、間は1つ残して詰める関数)は、キー作りには使いません。
残った1つのスペースの位置や全角半角が、そのままゆれの原因になるからです。
表示用のデータを整えるときだけTRIMを使います。
2. 全角と半角をそろえる
E2に次の式を入れます。
=ASC(D2)
ASCは、全角の英数字・カタカナ・記号を半角に変換する関数です。
全角の「123」や括弧の「(株)」が、半角の「123」「(株)」にそろいます。
- キー用の列は、全部半角に寄せて構いません。カタカナが「モグラ」になりますが、全行が同じように崩れるので照合には影響しません
- 表示用のデータに当てるのは、電話番号・郵便番号など英数字だけの列に限ります。会社名に当てるとカタカナが半角になり、直す作業が増えます
「キーは崩れてもよい、表示は崩さない」です。
3. 記号と「株式会社」の書き方をそろえる
F2に次の式を入れます。
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(E2,"㈱","株式会社"),"㍿","株式会社"),"㈲","有限会社"),"(株)","株式会社")
㈱ ㍿ ㈲ は、括弧と文字を並べたものではなく、1文字の記号です。
実際に確認すると、㈱モグラ商事 はASCを通しても ㈱モグラ商事 のままです。
だからSUBSTITUTEで明示的に置き換えます。
書き漏らすと、その会社だけが最後まで別の会社として残ります。
手順2で半角にそろえてあるので、全角の「(株)」のパターンを書く必要がありません。
逆順にすると「(株)」「(株)」「㈱」を個別に置換することになり、漏れが出ます。
4. 照合用のキーを作る
「何が一致したら同じ相手とみなすか」を1つの列にします。
まず項目を選びます。
| キーにする項目 | 強み | 弱み |
|---|---|---|
| 電話番号 | ゆれが少ない(数字だけにすれば1通りになる) | 代表番号だと別部署が同じ番号になる |
| メールアドレス | 個人単位でほぼ一意 | 担当者が代わると変わる。未入力が多いと使えない |
| 郵便番号+住所 | 会社の実体に近い | 表記ゆれが最も激しく、前処理の手間が最大 |
| 会社名・氏名 | ほぼ全行に入力されている | ゆれが多く、同名の別実体がある |
基準は「埋まっている率が高く、ゆれが少ない項目を軸にする」です。
名前は単独では使えないので、実務では「名前+電話番号」の複合キーにします。
電話番号は、G2に次の式を入れて数字だけにします。
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(
ASC(B2),UNICHAR(160),""),UNICHAR(8722),""),UNICHAR(8208),""),UNICHAR(8209),"")," ",""),"-",""),"ー",""),"(",""),")","")
長く見えますが、消しているのは区切りの記号だけです。
ASCで半角にそろえてから、スペース・ハイフン・長音・丸括弧を消しています。UNICHAR(番号) は「その番号の文字」の意味です(Excel 2013以降)。
UNICHARの4つは、普通のハイフンや空白と見た目が同じ別の文字を、番号で指定して消しています。
ハイフンに見えるが別の文字
| 文字 | 正体 | どこから来るか |
|---|---|---|
- | 半角ハイフン | 手入力 |
- | 全角ハイフン | 手入力(ASCで半角になる) |
ー | 長音記号 | 変換ミス(ASCで半角の ー になる) |
− | マイナス記号(U+2212) | Webサイトからのコピー |
‐ | ハイフン(U+2010) | PDF・Wordからのコピー |
‑ | ノーブレークハイフン(U+2011) | 同上 |
| (空白に見える) | 改行なしスペース(U+00A0) | Web画面からのコピー |
下の4つはASCで半角になりません。
式の UNICHAR(8722) は表の U+2212 と同じ文字です(10進数と16進数の書き方の違い)。
残りも同様に、160=U+00A0、8208=U+2010、8209=U+2011 です。
同じ番号を11通りの書き方で用意して通すと、キーは1種類に統一されました。
ハイフンと長音だけ消す式では、4種類に割れます。
この4つ以外の見えない文字が疑われるときは、=UNICODE(MID(B2,3,1)) で調べます。
UNICODEはUNICHARの逆で、文字を番号に変える関数です(この例はB2の3文字目)。
出た番号を SUBSTITUTE(…,UNICHAR(調べた番号),"") の形で式に1段足せば消せます。
電話番号の先頭の0が消えているリスト(0312345678 が 312345678)は、先に直します。
先頭に0が無く、セルの中で右寄せになっていたら該当です(初期設定では数値は右寄せ、文字列は左寄せ)。
表示形式を「文字列」に変えても、消えた0は戻りません。
空いている列に次の式を入れて、番号を作り直します。
=IF(B2="","",IF(ISNUMBER(B2),"0"&B2,B2))
0が消えた行(数値の行)だけ頭に「0」を足し、ハイフン付きの行はそのまま返す式です。
空欄以外のすべての行が0始まりになれば成功です。
G2の式の B2 をこの列のセルに置き換えて、キーを作り直してください。
最後に、H2で名前と電話番号をつなぎます。
=F2&"|"&G2
区切りの「|」を挟むのは、「12」+「34」と「1」+「234」がどちらも「1234」になる事故を防ぐためです。
5. 重複を数えて印を付ける(まだ消さない)
I2に次の式を入れます。
=IF(COUNTIF($H$2:$H$1001,H2)>=2,"重複候補","")
COUNTIFは、範囲の中に一致するデータが何個あるかを数える関数です。
キーが2回以上出てくる行に「重複候補」の印が付きます。
$H$2:$H$1001 は、データが2〜1001行目にある(1,000件)想定です。
自分のリストの最終行に合わせます。380件(データは2〜381行目)なら $H$2:$H$381 です。
最終行より大きいままでも結果は変わりませんが、範囲が足りないと漏れた行を数えられません。
「重複候補」でフィルタし、キー列で並べ替えると、同じ相手の候補が上下に並びます。
数千件のリストでも、目で見るのは印の付いた行だけで済みます。
消さずに印にしておくのは、こうしてフィルタと並べ替えに使えるからです。
COUNTIFの癖と対処です。
- 大文字と小文字を区別しません。「MOGURA」と「mogura」は同じと数えます
- 16桁以上の数字だけの文字列は、先頭15桁が同じだと同一扱いになります
- 長い顧客コードを数えるときは
=SUMPRODUCT(--EXACT($H$2:$H$1001,H2))(EXACTは厳密比較の関数)を使います
6. どの行を残すか、目で見て決める
同じ相手だと確認できたら、残す行の基準を先に決めてから見ます。
- 日付が新しいほうを残す。登録日や最終取引日が新しい行の情報のほうが生きている可能性が高い
- 日付列がなければ、項目が埋まっているほうを残す。片方にしかない情報(メールアドレスなど)は、残す行へ写してから消す
残す行が候補の中でいちばん上に来るように並べ替えておきます(理由は次の手順)。
7. 最後に「重複の削除」を使う
キー列を含めた表を選択し、「データ」タブの「重複の削除」で、キー列だけにチェックを入れて実行します。
注意 「重複の削除」の3つの仕様
- 完全一致した行しか消えない(ただし大文字小文字は区別しない)。表記ゆれが残っていれば両方残る(だから前処理が先)
- 重複のうち、いちばん上の行が残る。だから手順6で、残したい行を上に並べ替えておく
- どの行が消えたかは表示されない。出るのは削除件数だけ(だからコピーしたシートで実行する)
迷いが残る場合は、ボタンを使わず、フィルタで候補行を目視しながら行削除しても構いません。
迷った行は消さず、作業列に「保留」と書いて残します。
関数で続けるか、Power Queryに乗り換えるか
分かれ目は「2回目があるか」です。
1回きりの整理(数百〜数千件)なら、この記事の関数+目視で足ります。
毎月・毎週、同じ形式のリストが届くなら、Power Queryに乗り換えます。
ExcelのPower Query(「データ」タブの「取得と変換」)は、加工の手順を記録できる機能です。
一度作れば、次回は「更新」1回で同じ処理が走ります。
この記事の各手順に相当する操作が一通りあり、考え方は同じ順番のままです。
自分のExcelで使えるかの確認
| 機能・関数 | 使える環境 |
|---|---|
| ASC・SUBSTITUTE・COUNTIF・EXACT・IF・ISNUMBER・MID・TRIM | どのバージョンでも使える |
| UNICODE・UNICHAR | Excel 2013以降 |
| XLOOKUP・UNIQUE・FILTER | Excel 2021以降とMicrosoft 365 |
| Power Query | Excel 2016以降に標準搭載。2010・2013には標準では入っていない |
名寄せした結果を集計したい場合
手順4のキー列があれば、行を消さなくても集計できます。
- 相手ごとの合計 …
=SUMIF(キー列, キーのセル, 金額列) - 相手ごとの件数 …
=COUNTIF(キー列, キーのセル) - 一覧で見たい … ピボットテーブルの行にキー列を置く
行を消すのは、リストを配布する・システムに取り込む場合だけです。
集計だけなら、削除のリスクを取る必要はありません。
機械に任せてはいけない場面
機械で判定してよいのは「表記が同じか」までです。
「実体が同じか」は人が決めます。
機械的な統一が事故になる場面を3つ挙げます。
「株式会社」を削って寄せない
会社の正式名称は、「株式会社」が前に付くか後ろに付くかまで含めて登記されています。
「株式会社モグラ商事」と「モグラ商事株式会社」が別の会社である可能性があります。
同名の会社は所在地が違えば登記できるため、名前の一致は同一の証明になりません。
名前の統一は「候補を広く拾う」ためにやり、同一かどうかの確定は電話番号・住所と目視で取ります。
同姓同名
個人のリストで氏名だけをキーにすると、同姓同名の別人が1件に潰れます。
潰れた側の情報は消えるので、案内状の誤送付や履歴の混線につながります。
氏名は必ず「+電話番号」「+メールアドレス」の複合キーにします。
どちらも空欄の行は、機械で判定せず保留に回します。
支店・部署ちがい
同じ会社名で電話番号や住所が違う行は、本社と支店、別部署のことがあります。
請求先・納品先として別々に管理すべき相手で、1件にまとめると宛先が消えます。
会社名が同じで連絡先が違う行は「重複」ではなく「要確認」として、まとめるかを業務の事情で決めます。
要点 自動化してよい範囲
- 機械に任せる … 表記をそろえる/候補に印を付ける/並べ替える
- 人が決める … その2行が同じ相手かどうか/どちらの行を残すか
- 迷ったら消さない。「保留」の印を付けて残すほうが、消し間違いより安く済む
この記事の確認範囲
この記事の式と手順は、Microsoft Office Home and Business 2024(日本語版・バージョン 16.0.20326.20100)1台で確かめています。
バージョンは、Excelの ファイル → アカウント → Excel のバージョン情報 で確認できます。
- Excelのバージョンによって使える関数が違います。XLOOKUP・FILTER・UNIQUE は Office 2019以前では使えません
- 日本語版・日本語の設定での話です。ほかの言語版では、全角半角やカナの扱いが変わることがあります
- 処理速度と、数万行規模での動きは扱っていません。実際の動きを見て判断してください
- 表記ゆれの種類は、記事に挙げたものがすべてではありません
まとめ
- 名寄せはボタンではなく順番で決まります。そろえる → キーを作る → 数える → 目で決める → 最後に消す
- 前処理は「スペース → 全角半角 → 記号」の順。ゆれを先に減らすほど、後の置換が短くなります
- キーは「埋まっている率が高く、ゆれが少ない項目」を軸に、名前+電話番号の複合で作ります
- 機械の仕事は候補出しまで。同じ相手かの確定と、残す行の判断は人が決めます
- 消す操作は必ずコピーしたシートで。迷った行は保留にします


コメント