スプレッドシートで電話番号の書き方をそろえる方法(全角・ハイフン・先頭の0が消えたものも)

記事
IT・テクノロジー
顧客リストや名簿の電話番号が「090-XXXX-XXXX」「090XXXXXXXX」「090 XXXX XXXX」のように人によって書き方がばらばらで、検索や重複のチェックがうまくいかない。そんなときに、Google スプレッドシートの式だけでそろえる手順をまとめました。

■ この記事でできること
・全角の数字やハイフン、空白、かっこを取りのぞいて、数字だけにそろえる
・先頭の「0」が消えてしまった番号に 0 を戻す
・携帯電話(090・080・070)、050、0120 の番号を「090-XXXX-XXXX」の形に区切る

■ 手順 1:数字だけにする
A 列に元の電話番号があるとして、B2 に次の式を入れます。
=REGEXREPLACE(ASC(TO_TEXT(A2)),"[^0-9]","")

・TO_TEXT:数値として入っているものも文字として扱います
・ASC:全角の数字や記号を半角にします
・REGEXREPLACE:数字以外(ハイフン・空白・かっこなど)を消します

■ 手順 2:消えた「0」を戻す
CSV を開いたときなどに、先頭の 0 が消えて「9XXXXXXXXX」のように 0 が無い形になっていることがあります。C2 に次の式を入れます。
=IF(B2="","",IF(LEFT(B2,1)="0",B2,"0"&B2))

日本の電話番号は 0 から始まるので、0 で始まっていないものだけ先頭に 0 を付けます。

■ 手順 3:携帯・050・0120 をハイフンで区切る
D2 に次の式を入れます。
=IF(REGEXMATCH(C2,"^0[5789]0\d{8}$"),REGEXREPLACE(C2,"^(\d{3})(\d{4})(\d{4})$","$1-$2-$3"),IF(REGEXMATCH(C2,"^0120\d{6}$"),REGEXREPLACE(C2,"^(\d{4})(\d{3})(\d{3})$","$1-$2-$3"),C2))

・090・080・070・050 で始まる 11 けた → 「090-XXXX-XXXX」
・0120 で始まる 10 けた → 「0120-XXX-XXX」
・それ以外(固定電話など)→ 数字だけのまま

B2〜D2 を選んで、下の行までコピーすれば全部の行に使えます。

■ つまずきやすいところ
・固定電話は、式でハイフンを入れないほうが安全です。市外局番は「03」「045」「0466」「01267」のように地域によって 2〜5 けたあり、けた数だけでは区切る位置が決まりません。区切りが必要なときは、市外局番の一覧と照らし合わせる仕組みが要ります
・数字だけにそろえておけば、重複のチェックや検索には十分使えます
・終わったら D 列をコピーし、「形式を選択して貼り付け」→「値のみ貼り付け」で値にしておくと、元の列を消しても崩れません
・元の A 列はしばらく残しておくと、間違いに気づいたときに戻せます

■ 件数が多いとき・ほかの列もそろえたいとき
電話番号だけでなく、住所・会社名(㈱と株式会社など)・メールアドレスの重複もまとめて整えたいときは、次の出品でお手伝いしています。
・CSV・Excelの名簿の重複・文字化けを直します:https://coconala.com/services/4455453
・GAS でスプレッドシートの転記・集計を自動化します:https://coconala.com/services/4455227

あわせて読みたい:
・スプレッドシートで住所を「都道府県」と「市区町村以降」に分ける方法 https://coconala.com/blogs/6357864/842102
・スプレッドシートで重複したデータを見つけて消す3つの方法 https://coconala.com/blogs/6357864/830909

この記事は、AI(Claude)の助けを借りて書いています。
サービス数100万件のスキルマーケット、あなたにぴったりのサービスを探す