Excel関数 逆引き集 | 入力形式検証 → IF

Excel
スポンサーリンク

概要

「郵便番号は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","桁数エラー")

このように、

  1. まず「正しい状態とは何か?」を条件式で表す
  2. 条件を満たすかどうかで、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」、満たさないときは「形式エラー」と表示したいです。

  1. 前後のスペースを無視して 7 桁
  2. 数値として解釈できる

IF、AND、LEN、TRIM、ISNUMBER を使った式を書いてください。

=IF(
 AND(
  LEN(TRIM(A2))=7,
  ISNUMBER(--TRIM(A2))
 ),
 "OK",
 "形式エラー"
)

IF は「条件を満たしているかどうか」を判断した結果に、
人間が読めるメッセージやフラグを与える“判定の出口”です。
LEN、ISNUMBER、SEARCH などで “入力形式が正しい状態” を条件式として定義し、
最後に IF で OK/NG を返す、というパターンを自分の中でひとつ固めておくと、
どんな入力形式検証でも応用できるようになります。

Excel
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました