★今日の課題★
エクセルでドロップダウンリストを作ると、自由入力できなくなる課題を解決

課題の概要
Microsoft Excelには、セルへの入力をドロップダウンリスト(ドロップダウンメニュー)から選択して入力する機能が標準搭載されています。
それを使う事で、一意的な入力内容を求める事ができます。
一意的な入力ができれば、集計も楽になります。例えば性別欄が『男性』『男』『M』などと意味は同じだがデータとしてばバラバラということにならないために利用します。
このリスト選択を実装すると、任意の文字で入力することができなくなります。


エラー処理(標準)
ドロップダウンリストで選択させようとしているセルに、任意の文字を入力すると下図のとおりエラーが出ます。
標準仕様どおりであれば、そのセルを空欄(抹消)するか、リストから選択するしかありません。それ以外、抜け出す方法がありません。

リストの作り方
Excelでリストを作りたいセルを選択します。
セルが選択されている状態で上方のツールバーの中から『データ』タブを選択し、『データツール』枠にある『データの入力規則』のメニューを展開します。その中から『データの入力規則』を選択します。


データの入力規則の設定画面が開きます。
『入力値の種類』のメニューを展開し『リスト』を選択します。


『元の値』欄が入力可能な状態になるので、そこへリストしたい文字を入力します。
項目は半角コンマ(,)で区切ります。
『OK』ボタンを押して設定を終了すると、セルはリストから入力するように変わっています。


全体の手順は下記の通りになります。
- 『データ』タブを選択
- 『データツール』枠
- 『データの入力規則』メニュー展開
- 『データの入力規則』を選択
- 『入力値の種類』メニュー展開
- 『リスト』を選択
- 『元の値』欄入力
- 『OK』クリック
エラー回避
冒頭で示したエラーメッセージですが、回避策がありました。
入力規則設定画面でタブを『エラーメッセージ』にすると下図が現れます。
このタブの最上段にある『無効なデータが入力されたらエラーメッセージを表示する。』のチェックボックスをオフにすると、エラーメッセージは表示されなくなります。


注意喚起
前述のチェックマークを外す方法では、何もメッセージが出ないので、そこにドロップダウンリストがあったことすら気付かない可能性があります。
その課題解決策として、注意喚起だけして、自由入力を許容する方法があります。
その方法は2種類あり、『注意』と『情報』から選択できます。


表示は下図のようになります。
注意の場合、Yes / No / Cancel / Help の4つのボタンが現れます。
NoとCancelは同じ挙動のようにも思いますが、『いいえ(N)』を選択した場合は、入力した文字を温存したままセルにフォーカスが戻ります。『キャンセル』を選択した場合は、入力した文字は抹消されて、入力前の状態に戻ります。



おわりに
今回はMicrosoft Excelに搭載されいている便利な機能について、少し不便を感じたので解決策を模索しました。
人気のアプリだけに、解決策も用意してありました。同じ課題を抱えた人が過去に居たのか、アプリ開発者が想定していたのかわかりませんが、解決策は実装済でした。
今回のExcelファイルは、顔を見る事が無さそうな方々へ入力をお願いするものなので、自由度が高く無いとお困りになるだろうと思って一意性を諦めました。
集計がラクになることと、集計すべきデータを集めることは、相反する部分があることに気づかされました。
最後までお読みいただき、ありがとうございました。
