入力時に郵便番号や電話番号の形式(フォーマット)をチェックする方法についてです。
データの入力規則を使って形式通りに入力されているかを確認します。
本ページでは形式通りに入力できているか確認する関数を簡単に説明した後に手順を解説しています。
お急ぎの方は、この下にある「目次」から『入力時に郵便番号や電話番号の形式をチェックする方法』のリンクをクリックしてください。
使用する関数
今回は10種類の関数を使用します。
LEN関数、SUBSTITUTE関数、ISNUMBER関数、VALUE関数、LEFT関数、RIGHT関数、MID関数、AND関数、OR関数、LET関数です。
使いこなせる必要はありませんが、どの関数が何の役割を持っているかを簡単に理解しておきましょう。
文字数取得の関数(LEN関数)
LEN関数は文字列の文字数(長さ)をカウントします。
例えば、「=LEN("ABC")」なら『3』が返ります。
【例1】 =LEN("ABC") → 3
【例2】 =LEN("あいうえ") → 4
【例3】 =LEN("163-8004") → 8
文字列を置換する関数(SUBSTITUTE関数)
使用方法・サンプル
SUBSTITUTE関数は文字列1にある文字を、文字列2に置き換える関数です。
例えば、「=SUBSTITUTE("ABC","A","a")」なら「aBC」が返ります。
また、置換後の文字を空の文字にすれば、特定の文字を削除することができます(【例3】参照)
【例1】 =SUBSTITUTE("ABCDE","BCD","-") → A-E
【例2】 =SUBSTITUTE("郵便番号:163-8001","郵便番号:","〒") → 〒163-8001
【例3】 =SUBSTITUTE("あいう","あ","") → いう
【応用】特定の文字が何文字含まれているか確認する
LEN関数と組み合わせることで、特定の文字が何文字含まれているか確認することができます。
[調べたい文字列の文字数]から[特定の文字を削除した調べたい文字列の文字数]で分かります。
"ABAC"に"A"が何文字含まれているかは、「=LEN("ABAC")-LEN(SUBSTITUTE("ABAC","A",""))」です。
【例1】 =LEN("abc abc abc")-LEN(SUBSTITUTE("abc abc abc","a","")) → 3
【例2】 =LEN("0123-456-890")-LEN(SUBSTITUTE("0123-456-890","-","")) → 2
数値かを返す関数(ISNUMBER関数)
ISNUMBER関数は引数の値が数値であるかを返します。
例えば、「=ISNUMBER(123)」の場合、引数は数値のため『TRUE』を返します。「=ISNUMBER("123")」の場合、引数は文字列のため『FALSE』を返します。なお、引数が0除算などのエラーの場合、FALSEを返します。
【例1】 =ISNUMBER(1000+100) → TRUE
【例2】 =ISNUMBER("ABC") → FALSE
【例3】 A1の数式がエラーの時 =ISNUMBER(A1) → FALSE
文字列を数値に変換する関数(VALUE関数)
VALUE関数は文字列を数値に変換する関数です。
例えば、「=VALUE("123")」なら『123』が返ります。引数に数値に変換不可能な文字が含まれている場合はエラー(#VALUE!)を返します。
【例1】 =VALUE("800") → 800
【例2】 =VALUE("163-8004") → #VALUE!
【例3】 =VALUE("1000+100") → #VALUE!
文字列を抽出する関数(LEFT関数、RIGHT関数、MID関数)
LEFT関数、RIGHT関数、MID関数は文字列を抽出する関数です。
使用する場面が多いため、覚えておきましょう。
文字列の先頭の○文字を取得する関数(LEFT関数)
LEFT関数は文字列の先頭の○文字を取得する関数です。
例えば、「=LEFT("ABC",1)」なら『A』が返ります。
【例1】 =LEFT("ABC",2) → AB
【例2】 =LEFT("12345",3) → 123
文字列の末尾の○文字を取得する関数(RIGHT関数)
RIGHT関数は文字列の末尾の○文字を取得する関数です。
例えば、「=RIGHT("ABC",1)」なら『C』が返ります。
【例1】 =RIGHT("ABCD",2) → CD
【例2】 =RIGHT("1234",3) → 234
文字列の○文字目から●文字取得する関数(MID関数)
MID関数は文字列の○文字目から●文字取得する関数です。
例えば、「=MID("ABCD",2,2)」なら『BC』が返ります。
【例1】 =MID("あいうえお",3,2) → うえ
【例2】 =MID("1234",3,1) → 3
【例3】 =MID("163-8004",4,1) → -
条件一致の関数(AND関数、OR関数)
AND関数とOR関数は複数の条件が存在する場合に使用する関数です。
それぞれ役割が異なります。
AND関数
AND関数は、2つ以上の条件がすべて真であるとき、真を返します。
例えば、「最初の1文字が"-"でない」かつ「最後の1文字も"-"でない」かを確認する場合、『=AND(LEFT(F4,1)<>"-",RIGHT(F4,1)<>"-")』となります。
【例1】 =AND(LEFT("-ABC",1)<>"-",RIGHT("-ABC",1)<>"-") → FALSE
【例2】 =AND(LEFT("ABC-",1)<>"-",RIGHT("ABC-",1)<>"-") → FALSE
【例3】 =AND(LEFT("-ABC-",1)<>"-",RIGHT("-ABC-",1)<>"-") → FALSE
【例4】 =AND(LEFT("ABC",1)<>"-",RIGHT("ABC",1)<>"-") → TRUE
OR関数
OR関数は、2つ以上の条件のいずれかが真であるとき、真を返します。
例えば、「最初の1文字が"-"でない」もしくは「最後の1文字も"-"でない」かを確認する場合、『=OR(LEFT(A1,1)<>"-",RIGHT(A1,1)<>"-")』となります。
【例1】 =OR(LEFT("-ABC",1)<>"-",RIGHT("-ABC",1)<>"-") → TRUE
【例2】 =OR(LEFT("ABC-",1)<>"-",RIGHT("ABC-",1)<>"-") → TRUE
【例3】 =OR(LEFT("-ABC-",1)<>"-",RIGHT("-ABC-",1)<>"-") → FALSE
【例4】 =OR(LEFT("ABC",1)<>"-",RIGHT("ABC",1)<>"-") → TRUE
【例5】 =OR(LEN(SUBSTITUTE("0123-456-890","-",""))=10,LEN(SUBSTITUTE("0123-456-890","-",""))=11) → TRUE
複雑な数式を短くする関数(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が入力されているものとします。
【例1】 =LET(v,A1+A2,v*2) → 22
※LET関数を使用しない場合「(A1+A2)*2」
【例2】 =LET(val,SUM(A1:A3),val+val*2)→ 333
※LET関数を使用しない場合「SUM(A1:A3)+SUM(A1:A3)*2」
【例3】 =LET(num,LEN(SUBSTITUTE(B1,"-","")),OR(num=10,num=11)) → TRUE
※LET関数を使用しない場合「OR(LEN(SUBSTITUTE(B1,"-",""))=10,LEN(SUBSTITUTE(B1,"-",""))=11)」
郵便番号や電話番号の形式か確認する方法
郵便番号の形式か確認する方法
日本の郵便番号は数字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,"--",""))
入力時に郵便番号や電話番号の形式をチェックする方法
データの入力規則の[入力値の種類]を「ユーザー設定」にして、形式通りに入力されているかを確認します。
今回はエラーメッセージの表示文言を変更します。
入力時に形式を確認する範囲を選択します。
郵便番号と電話番号は確認する数式やエラーメッセージが異なるため、別々に設定する必要があります。
下画像では郵便番号を設定しています。

入力形式をチェックする条件を設定するため、[データの入力規則]ウィンドウを表示します。
[データ]タブから、[データの入力規則]ボタンをクリックします。

[入力値の種類]を「すべての値」から「ユーザー設定」に変更してください。
プルダウンをクリックした後、展開された中にある「ユーザー設定」をクリックします。

形式を確認する数式を[数式]に入力します。
数式の内容は上で説明しているため、ここでは入力手順を中心に解説します。
下に数式をコピーするボタンを設置しましたので、必要な項目をクリックしてください。コピーした数式の中に「アクティブなセル」と書かれている部分があります。ここを、選択範囲の左上のセル番地に置き換えてください。たとえば、D4から設定する場合は「D4」に置き換えます。
なお、差し替えが1回で済むように、Excel 2021以降で使用できるLET関数を使っています。ご使用のExcelが対応していない場合は、各解説の最後にある数式をコピー&ペーストしてください。

これで形式を確認する設定は完了ですが、エラーメッセージを変更しないと「データ入力の制限を満たしていない」旨だけが表示され、なぜエラーが起こるか分かりにくい状態です。そのため、次のSTEP以降でエラーメッセージを変更します。
[エラー メッセージ]タブをクリックします。

エラー メッセージのタイトル(下画像①)とメッセージ本文(下画像②)の設定を行ってください。

[OK]ボタンをクリックします。

入力時に形式をチェックできているか確認します。
あえて、形式に違反したテキストを入力し、エラーが表示されれば成功です。

入力時に形式をチェックする場合の注意点
入力規則だけでは既に入力済みの形式は確認できない
今回の方法では、既に入力されているデータが形式通りかを確認することはできません。
確認したい場合は、[データ]タブ → [データの入力規則]の▼ → [無効データのマーク] (画像1の①)で入力規則に違反したデータに赤い丸が表示されます。なお、赤い丸の表示を消したい場合は、[データ]タブ → [データの入力規則]の▼ → [入力規則マークのクリア] をクリックします(画像2の①)。

コピー&ペーストによる入力は防げない
コピー&ペーストによる入力は入力規則による確認を行わないため(編集モード除く)、形式はチェックされません。そのため、今回の設定をしていれば必ず安全、というわけではありません。
コピー&ペーストによる入力まで確認したい場合は、マクロ(Excel VBA)を使う方法もあります。
ただし、入力のたびにマクロが実行されるため動作が重くなる場合があり、保守できる人も限られるため、初心者にはおすすめできません。
まとめ
今回は、Excelで郵便番号や電話番号の形式をチェックする方法について解説しました。
データの入力規則で「ユーザー設定」を使用すると、入力時に形式通りかを確認できます。
郵便番号の場合は、ハイフンを含めた「123-4567」の形式になっているかを確認します。電話番号の場合は、ハイフンが2つあるか、ハイフンを除いた数字が10桁または11桁か、ハイフンが先頭や末尾にないかなどを確認します。
ただし、入力規則だけでは、既に入力されているデータやコピー&ペーストによる入力を完全に防ぐことはできません。
入力済みのデータを確認したい場合は、[無効データのマーク]もあわせて使用しましょう。
