Excelでユーザーカスタムの入力規則を定義するTech TIPS

Excelで帳票を作成する際、ユーザーが不正な値を入力しないよう、あらかじめ入力制限を行いたい場合がある。そのようなときには、「入力規則」の機能を利用すると便利である。

» 2003年09月20日 05時00分 公開
[山田祥寛]
「Tech TIPS」のインデックス

連載目次

Excelで独自の入力規則を作成

対象:Excel 2000/Excel 2002


 「Microsoft Excel」でエンドユーザーに帳票入力をさせると、往々にして意図しないデータが入力されてしまうことがある。1〜5の間の数値を入力するべきなのに6と入力していたり、年齢フィールドなのに負の数値が入力されていたりする。

 もちろん、さほど厳密性の求められないデータであれば支障はないが、入力されたデータを別なアプリケーションで処理/集計したいといった場合には、こうした不正データの存在は自動処理を妨げる大きな一因ともなる。

 そこで、本稿ではExcelの標準機能のひとつである「入力規則」を利用して、データの整合性を確認する方法について紹介することにする。

手順1――空のExcelシートを用意する

 本稿では特にサンプルのワークシートは用意しない。空のExcelシート上に、さまざまな入力規則を付記して、その動作を確認してみよう。

手順2――「入力規則」を設定する

 入力規則を設定したい1つ以上のセルをアクティヴにしたうえで、メニューバーから[データ]−[入力規則]を選択する。

データの入力規則の設定 データの入力規則の設定
入力されるデータに制約を付ける場合に利用する。
  (1)デフォルトではどのような値でも受け付ける[すべての値]が選択されている。
  (2)許容されるデータの最大値と最小値など、入力値に対する制限を指定する。

 標準状態で[入力値の種類]は[すべての値]となっているが、この場合、セルは入力の制限を受けない。[データ入力規則]で設定できるルールの組み合わせは以下の通りである。

入力値の種類 データ
整数
小数点数
リスト
日付
時刻
文字列(長さ指定)
ユーザー設定
設定可能な入力値のタイプ
整数だけ、あるいは日付だけなど、入力値に対してさまざまな制約を課すことができる。さらに、[データ]フィールドを指定することによって、最大値と最小値などに制限を設けることができる。ただし上の表で[データ]が「」の場合は、シート上の範囲を指定するか([リスト]の場合)、制約を付けるための数式を指定する([ユーザー設定]の場合)。

 上の表でデータ欄が「」の場合、最小値/最大値の欄に指定した値を基準にして、次のような範囲チェックを行うことができる。最大値/最小値は固定値を指定できる他、任意のセルを参照させることも可能だ。

設定値 概要
次の値の間 最小値≦セル値≦最大値
次の値の間以外 セル値<最小値 かつ セル値>最大値
次の値に等しい セル値(または文字列長)=指定値
次の値に等しくない セル値(または文字列長)≠指定値
次の値より大きい セル値>最大値
次の値より小さい セル値<最小値
次の値以上 セル値≧最大値
次の値以下 セル値≦最小値
データの範囲の指定
数値や日付、時刻データの場合は、これらの条件を指定して、入力可能な値の範囲を制限できる。

 データ入力規則が[リスト]の場合、カンマ区切りで入力可能な文字列を指定する。例えば、「ASP,PHP,JSP」のように指定する。すると、該当のセルを選択したときにコンボボックスが表示され、その中から値を選択することが可能になる。

[リスト]指定の例 リスト]指定の例
入力規則として[リスト]を指定すると、このようにコンボボックスから入力を選択できる。

 「リスト」の場合も、その他の規則を設定する場合と同様に、セル参照を行うことが可能である。例えば、セルA1〜A10に候補値リストが用意されている場合には、[元の値]フィールドに[=$A$1:$A$10]のように指定すればよい。

[リスト]指定の例 [リスト]指定の例
リスト]を選択すると、指定されたセルの内容をドロップダウンリストから選択して入力できる。
  (1)リスト]タイプの指定。
  (2)候補値の一覧が置かれているセル範囲の指定。

 これら以外にも、標準で用意された入力規則では表現できないルールもあるだろう。例えばセル内の文字列がすべて全角文字であることを確認したい場合などである。そのような場合には、入力規則として[ユーザー設定]を選択する。

 [ユーザー設定]はユーザーが任意の指定した条件式の結果が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)


手順3――入力時/エラー時のメッセージを設定する

 セルに入力規則を設定した場合は、さらにユーザーに対して正しい入力を要求するメッセージを表示できる。

 ユーザーに対する表示は2つの段階で行うことができる。1つは、入力前(ユーザーがセルを選択した時点)であり、もう1つは、入力後の値の検証段階(ユーザーが入力を確定させた後)である。

 [データの入力規則]ダイアログで[入力時メッセージ]タブを選択すると、ユーザーがセルを選択した時点でメッセージを表示させることができる。

入力時メッセージの設定 入力時メッセージの設定
ユーザーがセルを選択した時点でポップアップメッセージを表示させるための設定。
  (1)これをチェックすると、セルを選択した時点で、ポップアップメッセージが出力される。
  (2)表示するメッセージのタイトル。太字で表示される。
  (3)表示するメッセージの説明。入力値に対する制約などを表示するとよい。

 入力規則を確定して、該当セルにマウスカーソル上にカーソルを移動すると、次のようなメッセージが表示される。

表示されたメッセージ 表示されたメッセージ
入力時のメッセージを指定しておくと、セルを選択した時点でこのようなメッセージが表示される。
  (1)表示されたポップアップメッセージ。

 入力された値が正しいかどうかを検証し、不正な場合にメッセージを表示させるには、[エラー メッセージ]タブで設定を行う。

エラー時のメッセージの設定 エラー時のメッセージの設定
入力された値が正しくない場合に、エラーメッセージを表示させたり、再入力を促したりできる。
  (1)不正なデータが入力された場合にメッセージを表示させるためには、これを有効にする。
  (2)エラー検出時の動作の設定。[停止]を選択すると、正しい値を入力するか、入力をキャンセルするまで先へ進めなくなる。[警告]や[注意]を選択すると、不正な値のままでも先へ進むことができる。
  (3)メッセージのタイトル。
  (4)エラーメッセージ。なぜエラーになのか、どのような値を入力するべきかなどを表示するとよい。

 不正な値を入力しようとすると、次のようなダイアログが表示されるはずである。

不正な値を入力した場合のメッセージ 不正な値を入力した場合のメッセージ
規則を満たさない値を入力しようとすると、このようなメッセージが表示される。この場合は、正しい値を入力するか、入力をキャンセルするまで先へ進めない。
  (1)再入力する場合はこれを選択する。
  (2)入力をキャンセルする場合はこれを選択する。

手順4――デフォルトの入力モードを設定する

 入力される値に応じて、あらかじめIME(日本語入力システム)の入力モードも固定しておいた方がよい場合も少なくない。

 そのようなときには、「データの入力規則」ダイアログから「日本語入力」タブを選択することで、セルを選択した時点でのデフォルトの入力モードを設定できる。

IME入力モードの設定 IME入力モードの設定
セルを選択した時点での、デフォルトのIME入力モードを設定できる。
  (1)入力モード。[無効]を選択すると、ユーザーがモードを変更することはできなくなる。

 「無効」を選択したとき以外は、ユーザーは入力モードを自由に変更できる。それでもデフォルトを自動的に切り替えることで、ユーザーが意図しない間違いを減らすことが可能なはずだ。

「Tech TIPS」のインデックス

Tech TIPS

Copyright© Digital Advantage Corp. All Rights Reserved.

スポンサーからのお知らせPR

注目のテーマ

Microsoft & Windows最前線2025
AI for エンジニアリング
「サプライチェーン攻撃」対策
1P情シスのための脆弱性管理/対策の現実解
OSSのサプライチェーン管理、取るべきアクションとは
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。