Excelをファイルを使って、経費精算などの入力をお願いすると、入力してもらいたい内容とは違う内容が入力されて、作業効率が落ちてしまうことがあります。
そのような入力の誤りを少なくする方法の一つが、ドロップダウンリスト。
ドロップダウンリストは、一通りリストを作るだけでなく、「地域→都道府県→市区町村」のように、段階を追って、選択肢を絞っていくような使い方もできて便利です。
基本的なドロップダウンリストの作り方
まずは、単純なドロップダウンリストの作り方をおさらいしておきましょう。
ドロップダウンリストは、特定のセルに必要事項を入力してもらいたい時に、
セルを指定すると、入力してもらいたい内容のリストが表示されて、リストから入力内容を選べるという機能です。
ドロップダウンリストを使えば、
このような、部門名だけ(上の場合は「営業部」まで)を入力してもらいたいのに、「部内の区分まで入力してしまう」といった誤りを防ぐことができます。
ドロップダウンリストは、ドロップダウンリストを作りたいセルをアクティブ(セルにカーソルを合わせてクリック。セルが緑の枠で囲まれた状態です)にして、
「データ」タブから「データの入力規則」を開き、「データの入力規則」をクリック。
「データの入力規則」画面が開きます。
「入力値の種類」から「リスト」を開いて、「元の値」にリストの内容を入力するのですが、
上の図のように、「元の値」に直接入力してはいけません(それでも誤りではないのですが、効率が悪いのです)。
そうではなくて、まず、リストの内容を、シートに入力した上で、
「元の値」で、リストの内容が入力されたセル番地(A1セル、B4セルのような、シートの中のセルの場所のこと)を指定。
(ここでは、「LIST」と名前をつけたシートに入力したので、セルだけでなくシート名も含めて指定)
セル番地の指定は、「元の値」にカーソルを合わせたあとで、該当するセル(A1からA6)をドラッグ(左クリックしたままで引っぱる)すれば、OKです。
すると、
ドロップダウンリストが完成します。
「2段階のドロップダウンリスト」のイメージ
次に、2段階のドロップダウンリストを作りますが、まずは、「2段階のドロップダウンリスト」がどのようなものかを確認しておきます。
先ほどの経費精算シートに、承認者を入力するセルがあるとします。
承認者の所属する支店を入力するために、「エリア」のところで、「国内or海外」を選べるようにしておいて、
「国内」を選ぶと、
国内の支店が、
海外なら
海外の支店が、表示されるように、
一つ前のリストの選択肢が変わると、次のリストの内容が変わるような仕組みのことを、2段階のドロップダウンリストと言います。
2段階のドロップダウンリスト完成への大まかな流れ
次に、大まかなながれを説明します。
第一段階のドロップダウンリストを作る
まず、第一段階のドロップダウンリストを作ります。
これは、先述した「基本的なドロップダウンリストの作り方」の手順でOK。
今回は「エリア」について、「国内」「海外」と表示されるリストを作りますから、
リストの内容をシートに入力して、
「データの入力規則」の「元の値」に、入力したセルの範囲を指定すれば完成です。
第二段階のリストの内容をシートに入力し、 「名前の定義」でセル範囲に名前をつける
次に、第二段階のリストに表示させる内容を、シートに入力します。
その上で、入力した内容について、「名前の定義」を使って、入力したセルの範囲に名前をつけます。
第一段階のリストにある、「国内」「海外」と連動させるのがポイント。
国内の支店のセル範囲は、「国内」、海外の支店のセル範囲は「海外」と名前をつけます。
INDIRECT関数を使って、第2段階のリストの内容を指定する
最後に、第2段階のリストの内容を入力しますが、
ここに、先ほど「国内」「海外」と名前をつけたセル範囲を指定できれば、
第1段階のリストに連動して、第2段階のリストの内容を変えることができます。
ですが、「データ入力規則」の「元の値」に、
「国内」「海外」と直接入力してはいけません。
なぜなら、「国内」「海外」は、何もしないままだと文字列と認識されてしまうからです。
最初に確認した「基本的なドロップダウンリストの作り方」を思い出していただきたいのですが、
シートに入力した内容をリストにするためには、「データ入力規則」の「元の値」で、データを入力したセル番地(A1セル、B4セル、などのセルの場所のこと)を指定する必要がありました。
ですので、文字列と認識された「国内」「海外」は、リストの形にならないというわけです。
ですが、このことは、反対に考えると、「国内」「海外」をセル番地として認識させることができれば、リストとして表示させられると言うことでもあります。
そこで、INDIRECT関数です。
INDIRECT関数は、文字列をセル番地に変換する関数ですので、
INDIRECT関数を使って、第2段階のリストの内容を指定すれば、第1段階の内容と連動したリストをつくることができるということになります。
以上が大まかな流れになりますが、少し難しいポイントとして、
・名前の定義
・INDIRECT関数
がありますので、この2点について、さらに詳しく説明しておきます。
「名前の定義」でセル範囲に名前をつける
「名前の定義」でセル範囲に名前をつける方法を具体的に見ておきます。
まず、名前をつけたいセルを指定します。
A列を示す”A”の上にあるのが「名前ボックス」です。
「名前ボックス」にカーソルを合わせて、クリックすると、「名前ボックス」が編集できる状態になります。
「名前ボックス」が編集できる状態になったら、もとのセル番地を削除して、名前をつけます。
第1段階のリストの内容と連動するように「国内」としました。
ただし、正しく連動させるためには、誤りがないように、第1段階のリストの内容を「コピー&ペースト」するのがオススメです。
「海外」のリストの内容についても、同様に名前をつけます。
これで、「名前の定義」でセル範囲に名前をつけることができました。
INDIRECT関数で、文字列をセル番地のデータに変換する
次は、INDIRECT関数です。
せっかくセル範囲に名前をつけた(先ほどの「国内」「海外」)のに、そのまま「国内」「海外」と入力すると、Excelは文字列として認識してしまうので、
セル範囲として認識させるために、セル番地のデータに変換する機能を持つINDIRECT関数を使う、という流れでした。
リストの内容を入力するのは、「データの入力規則」の「元の値」。
そこで、INDIRECT関数をこのように使います。
=INDIRECT($C$18)
C18セルは、第1段階のリストで「国内」「海外」のどちらかが選ばれます。
ですので、「=INDIRECT($C$18)」は、「国内」or「海外」をセル範囲として指定することを意味します。
「名前の定義」で名前をつけたセル範囲を確認しておくと、
・国内:C1:C4
・海外:D1:D4
こうなりますから、
=INDIRECT($C$18)=C1:C4 or D1:D4
となり、C18と連動して、第2段階のリストを変化させることが可能になるのです。
3段階目のドロップダウンリストの作成
3段階目のドロップダウンリストを考えてみましょう。
第1段階の「エリア」、第2段階の「支店」が決まったら、その「支店」に連動して、「承認者の氏名」のリストが表示される仕組みです。
すでにお気づきの方もいらっしゃると思いますが、3段階にリストが拡張されたとしても、2段階のリストのやりかたで、対応することができます。
つまり、2段階目のリストの内容に合わせて、3段階目のリストを作り(「ロンドン」の承認者に対応する「アーセン・ベンゲル、マウリシオ・ポチェッティーノ、ジョゼ・モウリーニョ」をシートに入力)、
リストの内容を入力したセル範囲に、「名前の定義」で名前をつけて(F1セルからF3セルを「ロンドン」と名付ける)、
「データの入力規則」の「元の値」で、INDIRECT関数を使い、第2段階のリストのセルを指定する(D18が第2段階のリスト。支店名が選択される)。
INDIRECT関数を使っているので、「ロンドン」「東京」と言った文字列も、セル番地として認識される。
たとえば、D18セルで「ロンドン」が選択されると、「ロンドン」と名付けたセル範囲(F1セルからF3セル)が指定されるのと同じ意味を持つので、第3段階のリストとして、F1セルからF3セルの内容が表示されることになる。
この様にすると、支店の承認者のリストが完成させることができます。
あとは、「ロンドン」以外の支店についても、同様に、承認者のリストを入力して、第2段階のリストの内容と連動するように「名前の定義」でセル範囲に名前をつけていけば、第3段階のリストも完成させることができるのです。
まとめ
ドロップダウンリストは2段階、3段階と階層を持たせることができます。
ただし、階層が増えても難しいことはなく、「名前の定義」と「INDIRECT関数」の使い方を知っていれば、十分対応できます。
おまけ
ガンバ大阪の宇佐美選手がACLでも大活躍。
今シーズンの充実ぶりを見ると、夏に移籍するかもしれませんね。