概要
「郵便番号は7桁か?」「数値だけか?」「日付として妥当か?」
こういう “入力形式が正しいかどうか” をセルごとにチェックするときの中心になるのが IF 関数です。
IF は単体で使うというより、
- LEN(文字数チェック)
- ISNUMBER(数値かどうか)
- SEARCH(禁止文字や必須文字)
- DATEVALUE / TIMEVALUE など
と組み合わせて、
「条件を満たしていれば OK、満たさなければエラー表示」
という “入力形式検証ロジック” を作るための土台になります。
ここでは、プログラミング初心者向けに、
IF を使った入力形式検証の代表パターンを、テンプレートと例題つきで解説します。
IF 関数の基本発想(条件式+OK/NG)
IF の基本形は次の通りです。
=IF(条件式, 真のときの結果, 偽のときの結果)
入力形式検証では、ここでいう「条件式」が
- 形式が正しいか?(TRUE/FALSE)
- 範囲内の値か?
- 禁止文字が入っていないか?
などになります。
例えば、A2 に入力された文字列が 7 文字なら「OK」、
それ以外なら「桁数エラー」と表示したいときはこうです。
=IF(LEN(A2)=7,"OK","桁数エラー")
このように、
- まず「正しい状態とは何か?」を条件式で表す
- 条件を満たすかどうかで、IF でメッセージやフラグを返す
という二段構えで考えるのがポイントです。
文字数ベースの入力形式検証(LEN+IF)
郵便番号・会員ID・商品コードなど、
「桁数がルールの大部分」という項目は、LEN と IF の組み合わせが定番です。
例として、A2 に郵便番号が入っているとします。
7 桁ちょうどなら「OK」、それ以外は「桁数エラー」と表示する式はこうなります。
=IF(LEN(A2)=7,"OK","桁数エラー")
前後のスペースも無視したい場合はこうします。
=IF(LEN(TRIM(A2))=7,"OK","桁数エラー")
入力形式検証としては、
- ちょうど n 桁か
- n 桁以上か
- n〜m 桁の範囲か
などを LEN と組み合わせて IF でメッセージ化する、という使い方が基本になります。
数値・日付などの型チェック(IS系関数+IF)
「数値が入っているべきセルに文字列が入っていないか」
「日付として認識できないものが入っていないか」
といった “型” のチェックも IF の得意分野です。
数値チェックには ISNUMBER を使います。
A2 が数値なら「OK」、そうでなければ「数値を入力してください」と表示する場合。
=IF(ISNUMBER(A2),"OK","数値を入力してください")
日付として妥当かをざっくり見るなら ISNUMBER と DATEVALUE の組み合わせなども使えますが、
セルの表示形式で日付にしておき、そこに対して ISNUMBER で見るパターンがシンプルです。
=IF(ISNUMBER(A2),"日付OK","日付として無効です")
(「A2 の入力を日付として扱う」前提の設計にしておきます)
文字の中身チェック(SEARCH/FIND+IF)
文字数が合っていても、
中身に禁止文字が入っていたり、必須記号が足りないこともあります。
そういう “中身のパターン” の検証は、SEARCH と IF の組み合わせで行います。
例えば、メールアドレス欄 A2 に「@」が含まれていなければエラーにしたいとき。
=IF(ISNUMBER(SEARCH("@",A2)),"OK","@ を含めてください")
ファイル名やIDに「/」が入っていたら NG にしたいとき。
=IF(ISNUMBER(SEARCH("/",A2)),"禁止文字「/」が含まれています","OK")
複数の禁止文字がある場合は OR でつなぎます。
=IF(
OR(
ISNUMBER(SEARCH("/",A2)),
ISNUMBER(SEARCH("*",A2))
),
"禁止文字が含まれています",
"OK"
)
このように、SEARCH 系で TRUE/FALSE になる判定を作り、最終的なメッセージは IF で返す、という構造になります。
複数条件を組み合わせた入力形式検証(AND/OR+IF)
実務的な入力チェックは、「条件1つ」では済まないことが多いです。
例えば「郵便番号」の形式をもう少しちゃんと見るなら、
- 文字数が 7 桁
- すべて数字
- 前後スペースなし(あるいは無視)
といった複合条件が欲しくなります。
A2 が「7桁の数値(文字列でも可)として妥当か」を、
簡易的にチェックする一例はこうです。
=IF(
AND(
LEN(TRIM(A2))=7,
ISNUMBER(--TRIM(A2))
),
"OK",
"形式エラー"
)
ここでのポイントは、
- LEN(TRIM(A2))=7 … 文字数チェック
- ISNUMBER(–TRIM(A2)) … 数値に変換できるかチェック(文字列数字も許容)
の 2 条件を AND でまとめ、最後を IF で「OK / エラー」に落とし込んでいる点です。
同様に、パスワードの入力形式を
- 8〜20 文字
- 「@」を必ず含む
というルールにしたい場合は、例えば次のようにできます。
=IF(
AND(
LEN(A2)>=8,
LEN(A2)<=20,
ISNUMBER(SEARCH("@",A2))
),
"OK",
"形式エラー"
)
IF はあくまで「最後にメッセージを決める役」で、
その手前に AND/OR で組んだ条件式がある、とイメージすると整理しやすくなります。
入力形式検証のテンプレート集(IFベース)
ここまでの内容を、すぐ流用できる形でまとめておきます。
桁数だけチェック(7桁)
=IF(LEN(A2)=7,"OK","桁数エラー")
桁数の範囲チェック(8〜20文字)
=IF(AND(LEN(A2)>=8,LEN(A2)<=20),"OK","文字数エラー")
数値かどうかチェック
=IF(ISNUMBER(A2),"OK","数値を入力してください")
禁止文字 / が入っていないかチェック
=IF(ISNUMBER(SEARCH("/",A2)),"禁止文字「/」が含まれています","OK")
複合条件(7桁かつ数値)
=IF(
AND(
LEN(TRIM(A2))=7,
ISNUMBER(--TRIM(A2))
),
"OK",
"形式エラー"
)
問題1
A2 に郵便番号が入力されます。
「文字数が 7 桁ちょうどのときだけ OK、それ以外は『桁数エラー』」と表示したいです。
IF と LEN を使った式を書いてください。
=IF(LEN(A2)=7,"OK","桁数エラー")
問題2
A2 にパスワードが入力されます。
「8〜20 文字の範囲なら『OK』、それ以外は『文字数エラー』」と表示したいです。
IF と LEN、AND を使った式を書いてください。
=IF(AND(LEN(A2)>=8,LEN(A2)<=20),"OK","文字数エラー")
問題3
A2 に日付が入力されます。
A2 が「日付として認識できる値」のときは「日付OK」、それ以外は「日付エラー」と表示したいです。
IF と ISNUMBER を使った式を書いてください。
(A2 のセルは日付として入力されている前提とします)
=IF(ISNUMBER(A2),"日付OK","日付エラー")
問題4
A2 にメールアドレスが入力されます。
「@ が含まれていれば『OK』、含まれていなければ『@ を含めてください』」と表示したいです。
IF、SEARCH、ISNUMBER を使った式を書いてください。
=IF(ISNUMBER(SEARCH("@",A2)),"OK","@ を含めてください")
問題5
A2 に郵便番号が入力されます。
次の両方を満たすときだけ「OK」、満たさないときは「形式エラー」と表示したいです。
- 前後のスペースを無視して 7 桁
- 数値として解釈できる
IF、AND、LEN、TRIM、ISNUMBER を使った式を書いてください。
=IF(
AND(
LEN(TRIM(A2))=7,
ISNUMBER(--TRIM(A2))
),
"OK",
"形式エラー"
)
IF は「条件を満たしているかどうか」を判断した結果に、
人間が読めるメッセージやフラグを与える“判定の出口”です。
LEN、ISNUMBER、SEARCH などで “入力形式が正しい状態” を条件式として定義し、
最後に IF で OK/NG を返す、というパターンを自分の中でひとつ固めておくと、
どんな入力形式検証でも応用できるようになります。
