前回LEN関数で指定したセルの文字数をカウントする方法について解説しました。
LEN関数で指定したセルの文字数をカウントする方法 | Excelを制する者は人生を制す ~No Excel No Life~
このLEN関数を応用すると、文字数に制約のあるパスワードや各種コード類の入力時の桁の過不足を防止することも可能です。
今回はIF関数とLEN関数を組み合わせて指定の文字数の範囲外の場合にエラーメッセージを表示させる方法について解説していきます。
IF関数とLEN関数を組み合わせる方法
今回はオーソドックスな2ケースをご紹介します。
指定の文字数とイコール以外をエラーとする場合
まずは、文字数の完全一致を前提とするケースです。
今回のサンプルでは口座番号として7桁の入力をC3セルに入力することが指定してされているとします。
この場合、上図のようにIF関数の条件式として「LEN(c3)=7」のように該当の入力セルの文字数が指定した文字数(今回のサンプルでは7)になっているかどうか、を設定します。
そして、[真の場合]は指定した文字数と完全一致なので特に問題ないためブランク(””)を指定します。
指定した文字数と相違のある[偽の場合]として任意のエラーメッセージを指定します。(今回のサンプルでは”口座番号の桁数が7桁ではありません。”)
まとめると、下記の数式となります。
「=IF(LEN(C3)=7,””,”口座番号の桁数が7桁ではありません。”)」
これでC3セルの入力された文字数が7桁以外の場合はエラーメッセージが表示されるようになりました。
指定の文字数の範囲外をエラーとする場合
次のケースは指定の文字数に幅がある場合です。(○~○桁ならOKなど)
今回のサンプルでは6~8桁のパスワードをC6セルに入力することが指定されているとします。
この場合、上図のようにIF関数の条件式としてAND関数で6桁以上と8桁以内をそれぞれ設定します。
具体的には「AND(LEN(C6)>=6,LEN(C6)<=8)」のように2つのLEN関数をAND関数内に組み込むことで○以上○未満を表現します。 そして、[真の場合]は指定した文字数と完全一致なので特に問題ないためブランク(”")を指定します。 指定した文字数と相違のある[偽の場合]として任意のエラーメッセージを指定します。(今回のサンプルでは”PWは6~8文字で設定してください。”) まとめると、下記の数式となります。 「=IF(AND(LEN(C6)>=6,LEN(C6)<=8),"","PWは6~8文字で設定してください。")」
これでC6セルの入力された文字数が5桁以下、あるいは9桁以上の場合はエラーメッセージが表示されるようになりました。
まとめ
今回ご紹介した方法なら各種表やフォームの作成者の意図を入力者に伝えることが容易になります。
特にパスワードや各種コードは桁数が不揃いだと、その後の集計や加工の手間がかかるため、入力時に制限をかけておくと余計な手間が激減するのでおすすめです。
次回以降、他の文字列操作関数とLEN関数を組み合わせて可変性を持たせる方法についてご紹介していきます。
エクセル LEN関数を探していてこちらにきました。
エクセル2016使用しています。
LEN関数で20桁以上の文字数を数えようとしても
20以上は数えられず、また入力したデータは
15桁以上が00000…となってしまいます。
20桁以上を数えたい時はどうしたらいいのかご存知ですか?
ふーみんさん
コメントありがとうございます。
LEN関数というよりも、Excelの仕様上の問題ですね。
Excel上で取り扱うことができる数値は15桁まで、それ以降の桁の数値は「0」になってしまいます。
※しかも表示上は20桁に納まる範囲で表示されます。
ちなみに、「文字列」のデータであれば、20桁以上は入力およびLEN関数でのカウントは問題ないです。
どうしても「数値」で20桁以上の数値を扱いたいのであれば(実務でそのようなケースはあまり思い浮かびませんが)、
千や百万で丸めた数値にしてはいかがでしょうか?
※丸めた桁数分をLEN関数の結果へプラスする等
以上、ご参考になれば幸いです。