入力時に郵便番号や電話番号の形式(フォーマット)をチェックする方法についてです。
データの入力規則を使って形式通りに入力されているかを確認します。
本ページでは形式通りに入力できているか確認する関数を簡単に説明した後に手順を解説しています。
お急ぎの方は、この下にある「目次」から『入力時に郵便番号や電話番号の形式をチェックする方法』のリンクをクリックしてください。
使用する関数
今回は10種類の関数を使用します。
LEN関数、SUBSTITUTE関数、ISNUMBER関数、VALUE関数、LEFT関数、RIGHT関数、MID関数、AND関数、OR関数、LET関数です。
使いこなせる必要はありませんが、どの関数が何の役割を持っているかを簡単に理解しておきましょう。
文字数取得の関数(LEN関数)
LEN関数は文字列の文字数(長さ)を半角・全角を区別せずにカウントします。
例えば、「=LEN("123")」なら『3』が返ります。
● 使用サンプル
// DEF の文字数の「3」が返る
=LEN("DEF")
// あいうえ の文字数の「4」が返る
=LEN("あいうえ")
// 163-8004 の文字数の「8」が返る
=LEN("163-8004")
文字列を置換する関数(SUBSTITUTE関数)
使用方法・サンプル
SUBSTITUTE関数は文字列1にある文字を、文字列2に置き換える関数です。
例えば、「=SUBSTITUTE("ABC","A","a")」なら「aBC」が返ります。
また、置換後の文字を空の文字にすれば、特定の文字を削除することができます(【例3】参照)
● 使用サンプル
// "ABCDE" の "BCD" を "-" に置き換えて「A-E」が返る
=SUBSTITUTE("ABCDE","BCD","-")
// "郵便番号:163-8001" の "郵便番号:" を "〒" に置き換えて「〒163-8001」が返る
=SUBSTITUTE("郵便番号:163-8001","郵便番号:","〒")
// "あいう" の "あ" を削除して「いう」が返る
=SUBSTITUTE("あいう","あ","")
【応用】特定の文字が何文字含まれているか確認する
LEN関数と組み合わせることで、特定の文字が何文字含まれているか確認することができます。
[調べたい文字列の文字数]から[特定の文字を削除した調べたい文字列の文字数]で分かります。
"ABAC"に"A"が何文字含まれているかは、「=LEN("ABAC")-LEN(SUBSTITUTE("ABAC","A",""))」です。
● 使用サンプル
// "abc abc abc"の文字数(11) から"a"を削除した"bc bc bc"の文字数(8)を引いた結果、「3」が返る
=LEN("abc abc abc")-LEN(SUBSTITUTE("abc abc abc","a",""))
// "0123-456-890"の文字数(12) から"-"を削除した"0123456890"の文字数(10)を引いた結果、「2」が返る
=LEN("0123-456-890")-LEN(SUBSTITUTE("0123-456-890","-",""))
数値かを返す関数(ISNUMBER関数)
ISNUMBER関数は引数の値が数値であるかを返します。
例えば、「=ISNUMBER(123)」の場合、引数は数値のため『TRUE』を返します。「=ISNUMBER("123")」の場合、引数は文字列のため『FALSE』を返します。なお、引数が0除算などのエラーの場合、FALSEを返します。
● 使用サンプル
// 1000+100の計算結果1100 は数値のため、TRUEが返る
=ISNUMBER(1000+100)
// ABC は数値でないため(ABCは文字列)、FALSEが返る
=ISNUMBER("ABC")
// エラー値は数値でないため、FALSEが返る
※ A1の数式がエラーとなっている場合
=ISNUMBER(A1)
文字列を数値に変換する関数(VALUE関数)
VALUE関数は文字列を数値に変換する関数です。
例えば、「=VALUE("123")」なら『123』が返り、「=VALUE("-100A")」なら『#VALUE!』が返ります。
引数に数値に変換不可能な文字が含まれている場合はエラー(#VALUE!)を返します。
「¥」や「$」、「€」等の一部の通貨記号は数値に変換できる場合があります。
● 使用サンプル
// 10.5が返る。小数点は変換可能
=VALUE("10.5")
// -100が返る。"$"や"-"が先頭にある場合は変換可能
=VALUE("-$100")
// #VALUE! が返る。"-"が先頭にないため、エラー
=VALUE("163-8004")
※「=VALUE(163-8004)」の場合、引数内で計算され「-7841」が返る
文字列を抽出する関数(LEFT関数、RIGHT関数、MID関数)
LEFT関数、RIGHT関数、MID関数は文字列を抽出する関数です。
使用する場面が多いため、覚えておきましょう。
文字列の先頭の○文字を取得する関数(LEFT関数)
LEFT関数は文字列の先頭の○文字を取得する関数です。
例えば、「=LEFT("ABC",1)」なら『A』が返ります。
● 使用サンプル
// "ABC"の先頭2文字の"AB"が返る
=LEFT("ABC",2)
// "12345"の先頭3文字の"123"が返る
=LEFT("12345",3)
文字列の末尾の○文字を取得する関数(RIGHT関数)
RIGHT関数は文字列の末尾の○文字を取得する関数です。
例えば、「=RIGHT("ABC",1)」なら『C』が返ります。
● 使用サンプル
// "ABCD"の末尾2文字の"CD"が返る
=RIGHT("ABCD",2) → CD
// "1234"の末尾3文字の"234"が返る
=RIGHT("1234",3) → 234
文字列の○文字目から●文字取得する関数(MID関数)
MID関数は文字列の○文字目から●文字取得する関数です。
例えば、「=MID("ABCD",2,2)」なら『BC』が返ります。
● 使用サンプル
// "あいうえお"の3文字目(う)から2文字を抽出して"うえ"が返る
=MID("あいうえお",3,2)
// "1234"の3文字目(3)から1文字を抽出して"3"が返る
=MID("1234",3,1) → 3
// "163-8004"の4文字目(-)から1文字を抽出して"-"が返る
=MID("163-8004",4,1) → -
条件一致の関数(AND関数、OR関数)
AND関数とOR関数は複数の条件が存在する場合に使用する関数です。
それぞれ役割が異なります。
AND関数
AND関数は、2つ以上の条件がすべて真であるとき、真を返します。
例えば、「最初の1文字が"-"でない」かつ「最後の1文字も"-"でない」かを確認する場合、『=AND(LEFT(F4,1)<>"-",RIGHT(F4,1)<>"-")』となります。
● 使用サンプル
// AND(FALSE, TRUE)となるため、FALSEが返る
=AND(LEFT("-ABC",1)<>"-",RIGHT("-ABC",1)<>"-")
// AND(TRUE, FALSE)となるため、FALSEが返る
=AND(LEFT("ABC-",1)<>"-",RIGHT("ABC-",1)<>"-")
// AND(FALSE, FALSE)となるため、FALSEが返る
=AND(LEFT("-ABC-",1)<>"-",RIGHT("-ABC-",1)<>"-")
// AND(TRUE, TRUE)となるため、TRUEが返る
=AND(LEFT("ABC",1)<>"-",RIGHT("ABC",1)<>"-")
OR関数
OR関数は、2つ以上の条件のいずれかが真であるとき、真を返します。
例えば、「最初の1文字が"-"でない」もしくは「最後の1文字も"-"でない」かを確認する場合、『=OR(LEFT(A1,1)<>"-",RIGHT(A1,1)<>"-")』となります。
● 使用サンプル
// OR(FALSE, TRUE)となるため、TRUEが返る
=OR(LEFT("-ABC",1)<>"-",RIGHT("-ABC",1)<>"-")
// OR(TRUE, FALSE)となるため、TRUEが返る
=OR(LEFT("ABC-",1)<>"-",RIGHT("ABC-",1)<>"-")
// OR(FALSE, FALSE)となるため、FALSEが返る
=OR(LEFT("-ABC-",1)<>"-",RIGHT("-ABC-",1)<>"-")
// OR(TRUE, TRUE)となるため、TRUEが返る
=OR(LEFT("ABC",1)<>"-",RIGHT("ABC",1)<>"-")
// OR(TRUE, FALSE)となるため、TRUEが返る
=OR(LEN(SUBSTITUTE("0123-456-890","-",""))=10,LEN(SUBSTITUTE("0123-456-890","-",""))=11)
複雑な数式を短くする関数(LET関数)
この関数は形式を確認するのに必須ではありませんが、数式が短くなり、後で見直しやすくなります。
LET関数は、Excel 2021以降で使用できる関数です。数式の中で、セル番地・範囲・計算結果などに名前を付け、その名前を使って計算できます。プログラミングを学習したことがある方には、変数に近いものと考えると分かりやすいかもしれません。
例えば、税込計算に使う1.1をtaxとした場合、「=LET(tax,1.1,A1*tax)」と入力します。A1に100が入力されている場合は『110』が返ります。
● 使用サンプル
A1に1、A2に10、A3に100、B1に012-3456-7890が入力されているものとします。
// A1+A2を"v"に置き換える。22が返る。
// 「(A1+A2)*2」と同じ。
=LET(v,A1+A2,v*2)
// SUM(A1:A3)を"val"に置き換える。333が返る。
// 「SUM(A1:A3)+SUM(A1:A3)*2」と同じ。
=LET(val,SUM(A1:A3),val+val*2)
// LEN(SUBSTITUTE(B1,"-",""))※を"num"に置き換える。TRUEが返る。
// 「OR(LEN(SUBSTITUTE(B1,"-",""))=10,LEN(SUBSTITUTE(B1,"-",""))=11)」と同じ。
=LET(num,LEN(SUBSTITUTE(B1,"-","")),OR(num=10,num=11))
※LEN(SUBSTITUTE(B1,"-",""))は半角ハイフンのない電話番号の文字数(桁数)
郵便番号や電話番号の形式か確認する方法
郵便番号の形式か確認する方法
日本の郵便番号は数字7桁で、ハイフンが4文字目にあるかを確認します。
なお、本記事では日本の郵便番号を対象としています。
海外の郵便番号は、日本とは形式が異なります。
たとえば、アメリカの郵便番号は5桁、または5桁+4桁で表記される場合があります。イギリスの郵便番号は、数字に加えて英字も使われます。
そのため、海外の郵便番号をチェックする場合は、国や地域に合った条件に変更する必要があります。
郵便番号をチェック項目とチェックする関数
郵便番号が正しく入力されているかを確認するには下記の4項目のすべてが真であるかチェックします。
| No | チェック項目 | チェックする関数 |
|---|---|---|
| 1 | "-"が、1つ入力されているか | LEN(A1)-LEN(SUBSTITUTE(A1,"-",""))=1 |
| 2 | "-"以外は、数字として扱える文字か | ISNUMBER(VALUE(SUBSTITUTE(A1,"-",""))) |
| 3 | "-"を除き、7桁であるか | LEN(SUBSTITUTE(A1,"-",""))=7 |
| 4 | 4文字目が、"-"であるか | MID(A1,4,1)="-" |
郵便番号の形式で入力されているか確認する数式
郵便番号の形式で入力されているかは、先の4個の条件が成立していることを確認します。
式は次の通りになります(セルA1をチェックする場合)。
=AND(LEN(A1)-LEN(SUBSTITUTE(A1,"-",""))=1,ISNUMBER(VALUE(SUBSTITUTE(A1,"-",""))),LEN(SUBSTITUTE(A1,"-",""))=7,MID(A1,4,1)="-")
電話番号の形式か確認する方法
電話番号は、ハイフンを除いた数字が10桁または11桁で、"-"が2つあり、"-"が先頭や末尾にない、"-"が2つ連続しないことを確認します。
固定電話の場合は地域によってハイフンの位置が異なるため、本記事ではハイフンの位置まではチェックしません。
電話番号をチェック項目とチェックする関数
電話番号が正しく入力されているかを確認するには下記の6項目のすべてが真であるかチェックします。
| No | チェック項目 | チェックする関数 |
|---|---|---|
| 1 | "-"が、2つ入力されているか | LEN(A1)-LEN(SUBSTITUTE(A1,"-",""))=2 |
| 2 | "-"以外は、数字として扱える文字か | ISNUMBER(VALUE(SUBSTITUTE(A1,"-",""))) |
| 3 | "-"を除き、10桁もしくは11桁か | OR(LEN(SUBSTITUTE(A1,"-",""))=10,LEN(SUBSTITUTE(A1,"-",""))=11) |
| 4 | 最初の1文字が、"-"でないか | LEFT(A1,1)<>"-" |
| 5 | 最後の1文字が、"-"でないか | RIGHT(A1,1)<>"-" |
| 6 | "-"が連続していないか | A1=SUBSTITUTE(A1,"--","") |
電話番号の形式で入力されているか確認する数式
電話番号の形式で入力されているかは、先の6個の条件が成立していることを確認します。
式は次の通りになります(セルA1をチェックする場合)。
=AND(LEN(A1)-LEN(SUBSTITUTE(A1,"-",""))=2,ISNUMBER(VALUE(SUBSTITUTE(A1,"-",""))),OR(LEN(SUBSTITUTE(A1,"-",""))=10,LEN(SUBSTITUTE(A1,"-",""))=11),LEFT(A1,1)<>"-",RIGHT(A1,1)<>"-",A1=SUBSTITUTE(A1,"--",""))
入力時に郵便番号や電話番号の形式をチェックする方法
データの入力規則の[入力値の種類]を「ユーザー設定」にして、形式通りに入力されているかを確認します。
今回はエラーメッセージの表示文言を変更します。
入力時に形式を確認する範囲を選択します。
郵便番号と電話番号は確認する数式やエラーメッセージが異なるため、別々に設定する必要があります。
下画像では郵便番号を設定しています。

入力形式をチェックする条件を設定するため、[データの入力規則]ダイアログを表示します。
[データ]タブから、[データの入力規則]ボタンをクリックします。
![リボン:[ホーム]タブにある[データの入力規則]の場所を示した画像](https://start-excel.com/wp-content/uploads/2026/07/postal-code-phone-validation1-2-1024x291.webp)
[入力値の種類]を「すべての値」から「ユーザー設定」に変更してください。
プルダウンをクリックした後、展開された中にある「ユーザー設定」をクリックします。
![[データの入力規則]ダイアログ:[入力値の種類]の[ユーザー設定]を選択する操作手順](https://start-excel.com/wp-content/uploads/2026/07/postal-code-phone-validation1-3.webp)
形式を確認する数式を[数式]に入力します。
数式の内容は上で説明しているため、ここでは入力手順を中心に解説します。
下に数式をコピーするボタンを設置しましたので、必要な項目をクリックしてください。コピーした数式の中に「アクティブなセル」と書かれている部分があります。ここを、選択範囲の左上のセル番地に置き換えてください。たとえば、セルD4から設定する場合は「D4」に置き換えます。
なお、差し替えが1回で済むように、Excel 2021以降で使用できるLET関数を使っています。ご使用のExcelが対応していない場合は、各解説の最後にある数式をコピー&ペーストしてください。
![[データの入力規則]ダイアログ:[数式]の場所を示した画像](https://start-excel.com/wp-content/uploads/2026/07/postal-code-phone-validation1-4-1024x461.webp)
これで形式を確認する設定は完了ですが、エラーメッセージを変更しないと「データ入力の制限を満たしていない」旨だけが表示され、なぜエラーが起こるか分かりにくい状態です。そのため、次のSTEP以降でエラーメッセージを変更します。
[エラー メッセージ]タブをクリックします。
![[データの入力規則]ダイアログ:[エラーメッセージ]タブの場所を示した画像](https://start-excel.com/wp-content/uploads/2026/07/postal-code-phone-validation1-5.webp)
エラー メッセージのタイトル(下画像①)とメッセージ本文(下画像②)の設定を行ってください。
![[データの入力規則]ダイアログ:[エラーメッセージ]のタイトルとエラーメッセージの本文を入力する場所を示した画像](https://start-excel.com/wp-content/uploads/2026/07/postal-code-phone-validation1-6.webp)
[OK]ボタンをクリックします。
![[データの入力規則]ダイアログ:[OK]ボタンの場所を示した画像](https://start-excel.com/wp-content/uploads/2026/07/postal-code-phone-validation1-7.webp)
入力時に形式をチェックできているか確認します。
あえて、形式に違反したテキストを入力し、エラーが表示されれば成功です。

入力時に形式をチェックする場合の注意点
入力規則だけでは既に入力済みの形式は確認できない
今回の方法では、既に入力されているデータが形式通りかを確認することはできません。
確認したい場合は、[データ]タブ → [データの入力規則]の▼ → [無効データのマーク](画像1の①)で入力規則に違反したデータに赤い丸(画像2)が表示されます。
なお、表示した赤い丸を消したい場合は、[データ]タブ → [データの入力規則]の▼ → [入力規則マークのクリア]をクリックします(画像1の②)。
![【画像1】リボン:①.[無効データのマーク]の場所を示した画像。②.[入力規則マークのクリア]の場所を示した画像。
【画像2】シート:入力規則に違反したセルに赤い丸が表示された画像](https://start-excel.com/wp-content/uploads/2026/07/postal-code-phone-validation2-1-1024x273.webp)
コピー&ペーストによる入力は防げない
コピー&ペーストによる入力は入力規則による確認を行わないため(編集モード除く)、形式はチェックされません。そのため、今回の設定をしていれば必ず安全、というわけではありません。
コピー&ペーストによる入力まで確認したい場合は、マクロ(Excel VBA)を使う方法もあります。
ただし、入力のたびにマクロが実行されるため動作が重くなる場合があり、保守できる人も限られるため、初心者にはおすすめできません。
まとめ
今回は、Excelで郵便番号や電話番号の形式をチェックする方法について解説しました。
データの入力規則で「ユーザー設定」を使用すると、入力時に形式通りかを確認できます。
郵便番号の場合は、ハイフンを含めた「123-4567」の形式になっているかを確認します。電話番号の場合は、ハイフンが2つあるか、ハイフンを除いた数字が10桁または11桁か、ハイフンが先頭や末尾にないかなどを確認します。
ただし、入力規則だけでは、既に入力されているデータやコピー&ペーストによる入力を完全に防ぐことはできません。
入力済みのデータを確認したい場合は、[無効データのマーク]もあわせて使用しましょう。
関連記事
電話番号や郵便番号のハイフンを削除する方法
すでに入力されている電話番号や郵便番号からハイフンを削除したい場合は、SUBSTITUTE関数やREGEXREPLACE関数を使用できます。次の記事では、ハイフンを削除する手順と、置換によって先頭の「0」が消える場合の注意点を解説しています。

