消えた電話番号の「0」を1件ずつ戻すのをやめた日
よそから届いたExcelの電話番号や郵便番号を貼り付けたら、先頭の0が消えていた。市外局番を1つずつ確認しながら手で直していた作業と、そこから作ったツールの話を書く。
「3-1234-5678」という電話番号
取引先から届いた顧客リストのExcelを開くと、電話番号の列が「03-1234-5678」ではなく「3-1234-5678」になっていた。郵便番号も同じように、7桁のはずが6桁になっている行がいくつもあった。
原因はすぐに分かった。電話番号や郵便番号の列が「数値」として扱われていて、数値には先頭のゼロという概念がない。0という数字は、数値としては「無い」のと同じ扱いになる。
市外局番の一覧を見ながら、1件ずつ戻す
直すには、市外局番が何桁かを知る必要がある。東京や大阪の「03」「06」は2桁、多くの地域の市外局番は3桁から5桁まで幅がある。携帯電話の「090」「080」「070」は3桁で固定。この違いを知らないまま先頭に0を1つ足すだけでは、正しい番号にならない場合がある。
- 「3-1234-5678」——東京03なので、0を1つ足せば直る。
- 「45-123-4567」——横浜045なので、これも0を1つ足せば直る。
- 「90-1234-5678」——携帯電話090なので、同じく0を1つ。
- 郵便番号「12-3456」——本来「012-3456」のように先頭が0の地域もあれば、単純に1桁欠けているだけの場合もあり、判断が難しい。
結局、怪しい番号を1件ずつ検索して、実在する市外局番かどうか確かめながら直す作業になった。
気づいたのは「桁数で機械的に判定できる」ことだった
ある日、日本の電話番号と郵便番号には、決まった桁数のルールがあることに気づいた。
携帯電話は090・080・070・050で始まる11桁。固定電話は市外局番によって2〜5桁と幅があるが、全体の桁数は決まっている。郵便番号は必ず7桁。つまり、今の桁数を数えて、本来あるべき桁数に足りない分だけ先頭に0を補えば、市外局番の一覧を1件ずつ調べなくても機械的に直せる。
ここで書いたツールを、実際に試す
電話番号・郵便番号のハイフンを開く実際にどう動くか
電話番号や郵便番号の列を貼り付けると、桁数を判定してハイフンを一括で付け、消えた先頭の0も補う。
| 貼り付けた番号 | 結果 |
|---|---|
| 3-1234-5678(09桁) | 03-1234-5678 |
| 901234567890(携帯・0落ち) | 090-1234-5678 |
| 1234567(郵便番号6桁) | 要確認として表示(7桁に補えない) |
補えない番号は、直さず知らせる
桁数が大きくずれている番号や、市外局番の判定が曖昧な番号を機械的に「たぶんこう」と決め打ちすると、間違った番号を作ってしまう危険がある。このツールは、確実に判定できる場合だけ自動で直し、判断が難しい番号は直さずに確認が必要な行として表示するようにしている。
作ってみて変わったこと
取引先から届く名簿の形式は毎回ばらばらだが、貼り付けるだけで大半の番号が正しい形になる。市外局番の一覧を検索する回数が、ほぼなくなった。
意外だったのは、この不具合に気づかないまま名簿を使い続けているケースが多いことだ。電話番号は目視ではそれらしく見えてしまい、実際に電話をかけてつながらないまで気づかないことがある。今は新しい名簿を受け取ったら、まずこのツールに一度通して、桁数のおかしい番号がないかを確認する手順にしている。
使うときの注意
フリーダイヤルの「0120」やIP電話の「050」のように、市外局番とは違うルールで割り当てられた番号もある。これらは既知のパターンとして先に判定し、一般の市外局番と混同しないようにしている。それでも判定できない並びは、桁数だけを頼りに無理に直さず、確認が必要な行として残す方針にしている。
よくある質問
全角の数字が混ざっていても大丈夫ですか?
大丈夫です。全角の数字やハイフンは半角に変換してから処理します。
ハイフンをすべて外すこともできますか?
できます。「外す」を選ぶと、数字だけの並びに統一されます。システムへの取り込み用に数字だけそろえたいときに使えます。
海外の電話番号にも対応していますか?
対応していません。日本国内の電話番号・郵便番号の桁数ルールを前提にしたツールです。
関連する読みもの・ツール
同じように、自分の手作業をツールにしたものを他にも置いています
kamitoolはゲームや事務仕事の細かいツールが中心ですが、ネットショップの在庫・利益管理や、モール間のデータ移行のようなものは、noteで「TOOL BOX|手作業をツールにする」として公開しています。オフラインで動くファイル1枚の形で配っているものもあります。