Excelで帳票を作成する際、ユーザーが不正な値を入力しないよう、あらかじめ入力制限を行いたい場合がある。そのようなときには、「入力規則」の機能を利用すると便利である。
対象:Excel 2000/Excel 2002
「Microsoft Excel」でエンドユーザーに帳票入力をさせると、往々にして意図しないデータが入力されてしまうことがある。1〜5の間の数値を入力するべきなのに6と入力していたり、年齢フィールドなのに負の数値が入力されていたりする。
もちろん、さほど厳密性の求められないデータであれば支障はないが、入力されたデータを別なアプリケーションで処理/集計したいといった場合には、こうした不正データの存在は自動処理を妨げる大きな一因ともなる。
そこで、本稿ではExcelの標準機能のひとつである「入力規則」を利用して、データの整合性を確認する方法について紹介することにする。
本稿では特にサンプルのワークシートは用意しない。空のExcelシート上に、さまざまな入力規則を付記して、その動作を確認してみよう。
入力規則を設定したい1つ以上のセルをアクティヴにしたうえで、メニューバーから[データ]−[入力規則]を選択する。
標準状態で[入力値の種類]は[すべての値]となっているが、この場合、セルは入力の制限を受けない。[データ入力規則]で設定できるルールの組み合わせは以下の通りである。
入力値の種類 | データ |
---|---|
整数 | ○ |
小数点数 | ○ |
リスト | ※ |
日付 | ○ |
時刻 | ○ |
文字列(長さ指定) | ○ |
ユーザー設定 | ※ |
設定可能な入力値のタイプ 整数だけ、あるいは日付だけなど、入力値に対してさまざまな制約を課すことができる。さらに、[データ]フィールドを指定することによって、最大値と最小値などに制限を設けることができる。ただし上の表で[データ]が「※」の場合は、シート上の範囲を指定するか([リスト]の場合)、制約を付けるための数式を指定する([ユーザー設定]の場合)。 |
上の表でデータ欄が「○」の場合、最小値/最大値の欄に指定した値を基準にして、次のような範囲チェックを行うことができる。最大値/最小値は固定値を指定できる他、任意のセルを参照させることも可能だ。
設定値 | 概要 |
---|---|
次の値の間 | 最小値≦セル値≦最大値 |
次の値の間以外 | セル値<最小値 かつ セル値>最大値 |
次の値に等しい | セル値(または文字列長)=指定値 |
次の値に等しくない | セル値(または文字列長)≠指定値 |
次の値より大きい | セル値>最大値 |
次の値より小さい | セル値<最小値 |
次の値以上 | セル値≧最大値 |
次の値以下 | セル値≦最小値 |
データの範囲の指定 数値や日付、時刻データの場合は、これらの条件を指定して、入力可能な値の範囲を制限できる。 |
データ入力規則が[リスト]の場合、カンマ区切りで入力可能な文字列を指定する。例えば、「ASP,PHP,JSP」のように指定する。すると、該当のセルを選択したときにコンボボックスが表示され、その中から値を選択することが可能になる。
「リスト」の場合も、その他の規則を設定する場合と同様に、セル参照を行うことが可能である。例えば、セルA1〜A10に候補値リストが用意されている場合には、[元の値]フィールドに[=$A$1:$A$10]のように指定すればよい。
これら以外にも、標準で用意された入力規則では表現できないルールもあるだろう。例えばセル内の文字列がすべて全角文字であることを確認したい場合などである。そのような場合には、入力規則として[ユーザー設定]を選択する。
[ユーザー設定]はユーザーが任意の指定した条件式の結果がTrueの場合のみ、入力値が妥当であることを認めるものである。
例えば選択されたセルがB1である場合、[数式]フィールドに以下のような式を入力してみよう。
=LEN(B1)*2=LENB(B1)
LENとLENBは文字列の長さを返す関数であるが、若干の違いがある。与えられた文字列に対して、LEN関数は文字数を返すが、LENB関数はbyte数を返す。いくつかの文字列に対するLEN関数とLENB関数の戻り値を比較してみると、次のようになる。
入力値 | LEN関数 | LENB関数 |
---|---|---|
あいう | 3 | 6 |
ABC | 3 | 3 |
あいA | 3 | 5 |
LEN関数とLENB関数の戻り値の違い LENは文字数を、LENBはbyte数を返す関数。全角文字は1文字=2bytes、半角文字は1文字=1byteとなっているので、これを使えば文字が全角文字であるか半角文字であるかが分かる。 |
先の条件式は、LEN関数の戻り値の2倍がLENB関数の戻り値に等しい場合にTrueとなる。つまり、文字列に含まれるすべての文字が2bytes文字(全角文字)である場合にのみTrueとなる。上の表からも分かるように、入力された文字列がすべて半角文字だったり、半角文字と全角文字が混在している場合には、条件式は成立せず、Falseとなる。
これを利用すれば、入力値がすべて半角文字であることを検証するのも容易である。具体的には次のような式を使えばよい。
=LEN(B1)=LENB(B1)
セルに入力規則を設定した場合は、さらにユーザーに対して正しい入力を要求するメッセージを表示できる。
ユーザーに対する表示は2つの段階で行うことができる。1つは、入力前(ユーザーがセルを選択した時点)であり、もう1つは、入力後の値の検証段階(ユーザーが入力を確定させた後)である。
[データの入力規則]ダイアログで[入力時メッセージ]タブを選択すると、ユーザーがセルを選択した時点でメッセージを表示させることができる。
入力規則を確定して、該当セルにマウスカーソル上にカーソルを移動すると、次のようなメッセージが表示される。
入力された値が正しいかどうかを検証し、不正な場合にメッセージを表示させるには、[エラー メッセージ]タブで設定を行う。
不正な値を入力しようとすると、次のようなダイアログが表示されるはずである。
入力される値に応じて、あらかじめIME(日本語入力システム)の入力モードも固定しておいた方がよい場合も少なくない。
そのようなときには、「データの入力規則」ダイアログから「日本語入力」タブを選択することで、セルを選択した時点でのデフォルトの入力モードを設定できる。
「無効」を選択したとき以外は、ユーザーは入力モードを自由に変更できる。それでもデフォルトを自動的に切り替えることで、ユーザーが意図しない間違いを減らすことが可能なはずだ。
■この記事と関連性の高い別の記事
Copyright© Digital Advantage Corp. All Rights Reserved.