Googleスプレッドシートに電話番号を入力したら、
09012345678
と入力したはずなのに、
9012345678
となってしまったことはありませんか?電話番号の先頭にある「0」が消えてしまう問題です。
これはGoogleスプレッドシートが電話番号を「文字」ではなく数値として認識していることが原因です。
電話番号は計算するものではないので、基本的には「数字」ではなく「文字列」として扱ったほうが安全です。
今回は、電話番号の先頭の0が消えてしまう原因と、その対処方法をまとめます。

なぜ電話番号の「0」が消えるのか?
例えば、Googleスプレッドシートに09012345678と入力します。
ところが、Googleスプレッドシートがこれを「数値」として認識すると、9012345678のように先頭の0が表示されなくなることがあります。
これは、09012345678という電話番号を、9012345678という数値として扱っているためです。
数値として考えれば、先頭の0は意味を持ちません。例えば、00123という数値は123と同じだからです。
しかし電話番号の場合は、09012345678と9012345678では意味が全く違います。

そのため、電話番号は「数値」ではなく「文字列」として扱うのがおすすめです。
方法1:電話番号の列を「書式なしテキスト」にする
一番おすすめなのがこの方法です。
これから電話番号を入力する場合は、あらかじめ対象の列を「書式なしテキスト」に変更しておきます。
Googleスプレッドシートで電話番号を入力する列を選択し、
「表示形式」→「数字」→「書式なしテキスト」
を選択します。これで、その列は文字列として扱われます。
Googleスプレッドシートでは、数字を文字列として扱うことで先頭の0を維持できます。Googleのヘルプコミュニティでも、先頭の0を保持する方法としてテキスト形式が案内されています。
例えば、
09012345678
08012345678
07012345678
と入力すると、そのまま0が付いた状態で保存できます。
ポイント
電話番号を入力する前に「書式なしテキスト」にしておくのがポイントです。
入力したあとに設定を変更するより、最初から電話番号用の列を文字列として設定しておくほうが確実です。
方法2:先頭に「'」を付ける
1件だけ入力するときなどは、電話番号の先頭にシングルクォーテーションを付ける方法もあります。例えば、
'09012345678
と入力します。すると、セル上では09012345678と表示されます。
シングルクォーテーションは、Googleスプレッドシートに「これは文字列として扱ってください」と伝えるためのものです。
ただし、電話番号を大量に入力する場合には面倒なので、基本的には列全体を「書式なしテキスト」にしておく方法がおすすめです。
方法3:すでに「0」が消えてしまった場合
では、すでに9012345678のように0が消えてしまった場合はどうすればいいのでしょうか?
携帯電話番号のように、もともとの桁数(11桁)が決まっているのであれば、TEXT関数を使って0を付け直すことができます。
例えばA2セルに9012345678と入っている場合、
=TEXT(A2,"00000000000")
とします。すると、09012345678のように11桁になるように0を補って表示できます。
GoogleのTEXT関数では、書式に0を指定すると、指定した桁数になるように0を表示できます。
複数の電話番号を一括で直す場合
例えばA列に電話番号が入っていて、
9012345678
8012345678
7012345678
のようになっているとします。B2に、
=TEXT(A2,"00000000000")
と入力し、B2の数式を下までコピーします。すると、
| A列 | B列 |
|---|---|
| 9012345678 | 09012345678 |
| 8012345678 | 08012345678 |
| 7012345678 | 07012345678 |
のように修正できます。
修正が完了したら、B列をコピーして、「編集」→「特殊貼り付け」→「値のみ貼り付け」で貼り付けると、数式ではなく値として保存できます。元のA列を削除したい場合も、先に値に置き換えておくと安心です。
「090」だけではなく固定電話にも使える?
もちろん使えます。例えば、
0312345678
0612345678
0521234567
などの電話番号でも、文字列として扱えば先頭の0を保持できます。
ただし、電話番号は桁数が必ずしも同じではありません。そのため、
=TEXT(A2,"00000000000")
のように11桁固定で変換する方法は、11桁の電話番号に限定して使うほうが安全です。10桁の固定電話に使うと、00312345678のように0が2つ付いてしまいます。
固定電話など、10桁の番号が混在する場合は、
="0"&A2
のように先頭に0を1つ付け直す方法が使えます。日本の電話番号は先頭の0が1つなので、0が消えてしまったセルであれば桁数に関係なく元に戻せます。
ただし、すでに0が付いているセルにこの式を使うと0が2つになるので、0が消えてしまったセルだけに使いましょう。
電話番号にハイフンを入れたい場合
例えば、09012345678を090-1234-5678のように表示したい場合もあります。
この場合もTEXT関数を利用できます。
=TEXT(A2,"000-0000-0000")
とすると、090-1234-5678のような形式で表示できます。この書式は11桁の携帯電話番号向けで、03-1234-5678のような固定電話とは区切り位置が違う点に注意してください。
Googleスプレッドシートでは、カスタム数値形式でも「0」を指定して桁数や表示形式を定義できます。
ただし、電話番号を管理する目的なら、個人的には表示形式で無理に加工するより、電話番号そのものを文字列として保存するほうが扱いやすいと思います。
Contact Form 7からGoogleスプレッドシートへ保存するときは注意
WordPressのContact Form 7からGoogleスプレッドシートへ問い合わせ情報を保存している場合も、この問題が発生することがあります。
例えばフォームから09012345678という電話番号が送信されても、Googleスプレッドシート側で電話番号の列が数値として扱われると、9012345678になってしまう可能性があります。
そのため、問い合わせフォームのデータをGoogleスプレッドシートに保存する場合は、電話番号を保存する列をあらかじめ「書式なしテキスト」にしておくのがおすすめです。
Contact Form 7 → Googleスプレッドシート連携については、こちらの記事でも詳しくまとめています。
【WordPress】Contact Form 7の問い合わせ内容をGoogleスプレッドシートに保存する方法
電話番号は「数字」ではなく「文字列」と考える
今回の問題のポイントはここです。
電話番号は数字だけで構成されていますが、データとしては「数値」として扱う必要がありません。例えば、09012345678を計算することはありません。
電話番号に+81を付けたり、03-1234-5678のようにハイフンを入れたりすることもあります。
つまり電話番号は、「数字でできた文字列」と考えたほうが分かりやすいです。
これは郵便番号なども同じです。〒100-0001のようなデータを数値として扱う必要はありません。
まとめ
Googleスプレッドシートで電話番号の先頭の「0」が消えてしまう場合は、電話番号が数値として扱われている可能性があります。
一番簡単な対処方法は、電話番号を入力する列を「書式なしテキスト」に変更することです。

これから入力する場合
表示形式
↓
数字
↓
書式なしテキスト
としてから電話番号を入力します。
すでに0が消えてしまった場合
TEXT関数を使って、
=TEXT(A2,"00000000000")
のように桁数を指定して0を補うことができます。固定電話が混在している場合は="0"&A2で先頭に0を1つ付け直します。
電話番号、郵便番号、商品コード、会員番号など、先頭に0が付く可能性のあるデータは、最初から「文字列」として扱うのがポイントです。
「09012345678」を「9012345678」にしてしまってから気づくとちょっと面倒なので、電話番号を管理するスプレッドシートを作るときは、最初に列の表示形式を確認しておくと安心です。