Excel関数 逆引き集 | 電話番号を整形 → TEXT

Excel
スポンサーリンク

概要

電話番号の見た目を揃える最短手は、TEXT関数で「ゼロ埋め+ハイフン挿入」の書式を指定することです。まず数字以外(ハイフン・空白・かっこ等)を取り除いて“純粋な数字”にしてから、桁数や先頭の番号帯に応じて書式を切り替えます。日本の番号は10桁(固定電話)と11桁(携帯・PHS)を使い分けるのが基本です。


基本の使い方

書式

=TEXT(値,"書式")
  • 値:数値(文字列はVALUEで数値化)
  • 書式:ハイフンの位置を含むゼロ埋めパターン(例:”00-0000-0000″)

=TEXT(0312345678,"00-0000-0000")   // "03-1234-5678"(10桁)
=TEXT(09012345678,"000-0000-0000") // "090-1234-5678"(11桁)

具体例

まずはクリーン化(数字だけにする)

=VALUE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2,"-","")," ",""),"(",""),")",""))

A2からハイフン・空白・かっこを除去し、数値化します。以後はこの「クリーン化済み数値」を基準に整形します。

10桁なら「00-0000-0000」で整形(固定電話の代表例)

=IF(LEN(B2)=10, TEXT(B2,"00-0000-0000"), "")

0312345678 → 03-1234-5678。2桁市外局番の代表パターンに適合します。

11桁なら「000-0000-0000」で整形(携帯の代表例)

=IF(LEN(B2)=11, TEXT(B2,"000-0000-0000"), "")

09012345678 → 090-1234-5678。

0120(フリーダイヤル)の推奨パターン(10桁)

=IF(AND(LEN(B2)=10, LEFT(B2,4)="0120"), TEXT(B2,"0000-000-000"), "")

0120123456 → 0120-123-456。0120は「4-3-3」で読みやすく整形します。


応用テンプレート

10桁/11桁で自動切り替え

=IF(LEN(B2)=11, TEXT(B2,"000-0000-0000"),
 IF(LEN(B2)=10, TEXT(B2,"00-0000-0000"), ""))

桁数に応じて標準パターンを自動適用します。

0120優先+それ以外の10桁・11桁切替

=IF(AND(LEN(B2)=10, LEFT(B2,4)="0120"), TEXT(B2,"0000-000-000"),
 IF(LEN(B2)=11, TEXT(B2,"000-0000-0000"),
 IF(LEN(B2)=10, TEXT(B2,"00-0000-0000"), "")))

最初に0120を判定し、残りを桁数で振り分けます。

国際表記(+81に変換、先頭の0を落とす)

="+" & 81 & "-" & MID(B2,2,2) & "-" & MID(B2,4,4) & "-" & RIGHT(B2,4)

08012345678 → +81-80-1234-5678。国内携帯(11桁)の例。固定電話は市外局番長が揺れるため、厳密対応は地域辞書が必要です。

入口から出口までひとつの式にまとめる(総合版)

=LET(
 raw, A2,
 num, VALUE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(raw,"-","")," ",""),"(",""),")","")),
 IF(AND(LEN(num)=10, LEFT(num,4)="0120"), TEXT(num,"0000-000-000"),
 IF(LEN(num)=11, TEXT(num,"000-0000-0000"),
 IF(LEN(num)=10, TEXT(num,"00-0000-0000"), "")))
)

1セルでクリーン化から整形まで完結(Microsoft 365のLET対応環境向け)。


よくあるつまずきと対策

文字列のままではTEXTが正しく働かない

数字文字列は事前にVALUEで数値化してください。クリーン化過程で同時に行うのが最も安全です。

市外局番の桁は地域で異なる

03や06(2桁)、04x/05x(3桁)、市内局番の桁も地域差あり。完全厳密な分割は局番辞書が必要です。一般整形は「00-0000-0000」を採用し、例外(0120など)だけ特別扱いしましょう。

先頭ゼロの保持

数値化すると先頭ゼロは内部的には失われますが、TEXTのゼロ埋めで表示を復元できます。ゼロ埋め書式を必ず指定してください。

記号や空白が混在

SUBSTITUTEで「-」「空白」「(」「)」を除去してから整形します。その他の記号があり得る場合は追加除去してください。


例題

問題1: A2の電話番号から記号や空白を除去し、数値化してB2に表示してください。

解答例:

=VALUE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2,"-","")," ",""),"(",""),")",""))

問題2: B2が10桁なら「00-0000-0000」形式でC2に表示してください。

解答例:

=IF(LEN(B2)=10, TEXT(B2,"00-0000-0000"), "")

問題3: B2が11桁なら「000-0000-0000」形式でC2に表示してください。

解答例:

=IF(LEN(B2)=11, TEXT(B2,"000-0000-0000"), "")

問題4: B2が0120で始まる10桁なら「0000-000-000」形式でC2に表示してください。

解答例:

=IF(AND(LEN(B2)=10, LEFT(B2,4)="0120"), TEXT(B2,"0000-000-000"), "")

問題5: A2の入力をクリーン化し、桁数や0120に応じてC2に自動整形(10桁・11桁対応)してください。

解答例:

=LET(
 raw, A2,
 num, VALUE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(raw,"-","")," ",""),"(",""),")","")),
 IF(AND(LEN(num)=10, LEFT(num,4)="0120"), TEXT(num,"0000-000-000"),
 IF(LEN(num)=11, TEXT(num,"000-0000-0000"),
 IF(LEN(num)=10, TEXT(num,"00-0000-0000"), "")))
)

まとめ

電話番号整形は「クリーン化(記号除去+数値化)」→「桁・番号帯で書式切替」の二段構えが鉄則です。TEXTのゼロ埋め書式を使えば、先頭ゼロの問題も自然に解決できます。厳密な市外局番分割は辞書が必要ですが、まずは「10桁=00-0000-0000」「11桁=000-0000-0000」「0120=0000-000-000」を覚え、実務の整形を安定させましょう。

タイトルとURLをコピーしました