2017年11月28日

【Excel】入力規則で、特定の文字列と1以上の整数しか入力できないようにしたい

お題

入力規則のリストや数値指定を使っている方も多いと思いますが、「Nothingという文字列と1以上の整数しか入力できないようにしたい」というご要望があったので、メモ。

入力規則はユーザー設定にすると数式を入れることができるので、複数条件が可能となります。
式の結果がTRUEの時だけ入力が受け付けられ、FALSEの場合はエラーを出し入力を拒否します。
なので、ユーザー設定の数式はTRUEかFALSEが返るような式である必要があります。
IF関数の第一引数(条件)を入れれば良いのです。


実装

1.入力規則の入力値の種類を「ユーザー設定」にします。
0032_1.png

2.一番下に数式を入力する欄が表示されるので、ここに式を入れます。
=IF(ISNUMBER(A1),AND(MOD(A1,1)=0,A1>0),A1="Nothing")

0032_2.png
 ※上記式の「A1」と、設定をしたいセル番地を置き換えてください。

3.今回は、数値もしくは「Nothing」のみ、つまり半角英数でしか入力させたくないので、「日本語入力」タブで[無効]にします。
 この設定をしたセルに入力カーソルを合わせたとき、IMEはオフになり、[半角/全角]キーを押しても全角入力にすることができなくなります。
 [オフ(英語モード)]だと、入力カーソルを合わせたときはIMEはオフになりますが、[半角/全角]キーを押すと全角入力に変わります。
0032_3.png

尚、入力規則の数式に入力間違いや論理エラーが合っても、教えてくれませんので、まずはセルに式を入れてみて、自分の要望通りの答えが返るか確認したほうが良いです。


MOD関数について

MOD関数は余りを返す関数です。
プログラム言語には余りを返す演算子があったりしますが、Excelはそういう演算子はなく、MOD関数しかありません。
今回は、整数かどうかを判断したいのですが、Excelには整数か判断させる関数がないので、MOD関数を応用します。
=MOD(対象,割りたい数値)

1で割ったとき、割り算としての答えは元の数値と同じですが、MODの返り値は余り、すなわち小数部分を返します。
なので、MODの返り値がゼロのときは元の値は整数、ゼロ以外だったら元の値は整数ではない、という判断ができます。
0032_5.png

第二引数(割りたい数値)がゼロの場合は、#DIV/0!になるので、引数をセル番地にするときはご注意ください。

ちなみに整数商を求めたいときは、QUOTIENT関数を使います。


ざっくり説明

単純に、
=OR(AND(ISNUMBER(A1),MOD(A1,1)=0,A1>0),A1="Nothing")

とした場合、入力した値が文字列だった場合、MODや>(比較)ができないためエラーとなります。

なので、最初にIF関数で数値か判断し、数値の場合は整数かつ0より大きいかを判断し、数値でない場合は「Nothing」と一致するか、という式にしました。
1以上はA1>0でもA1>=1でもどちらでも良いです。
ややこしい場合は、[fx]ボタンをクリックして関数ボックスを表示させるとわかりやすいです。
0032_4.png


よくANDとORの使い分けが難しい、と聞きますが、自分の要望を文章にしてみるとわかりやすくなると思います。












posted by へなちょこ at 06:00 | Comment(0) | TrackBack(0) | Excel
この記事へのコメント
コメントを書く

お名前:

メールアドレス:


ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバックURL
https://fanblogs.jp/tb/6963529
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック
Build a Mobile Site
スマートフォン版を閲覧 | PC版を閲覧
Share by: