いまさら聞けないExcelの使い方講座

【Excel】伸縮自在のドロップダウンリストを実現! スピル演算子を使った省力化テク

ドロップダウンリストでも「#」が便利

テーブルを使わなくても伸縮可能

 特定の項目を繰り返し入力する表では「ドロップダウンリスト」を組み込むことがあります。しかし、リストの項目が追加・削除された場合はメンテナンスに手間がかかります。

 例えば、運用中に「サービス」という部署が追加された場合、ドロップダウンリストには自動的に反映されません。

例えば、E列に「サービス」という部署を追加しても、ドロップダウンリストには自動的に反映されません

 これは入力規則として設定されているセル範囲がセルE2~E4であることが原因です。[データ]タブにある[データの入力規則]をクリックして、ドロップダウンリストの[元の値]を確認すると、「=$E$2:$E$4」と設定されていることがわかります。

[データの入力規則]ダイアログボックスで、ドロップダウンリストの[元の値]には「=$E$2:$E$4」と設定されています(①)

 更新頻度は低くても、項目漏れは入力ミスや管理上の問題の原因になりかねません。できれば自動的に伸縮させたいですよね? 参照する表を「テーブル」に変換する方法が定番ですが、今回はスピル範囲演算子「#」を使ったテクニックを紹介します。

セル範囲を参照すると「スピル」で返される

 以前にオートフィル不要という切り口で紹介したスピル範囲演算子「#」の動作を振り返ってみましょう。

 例えば、セルに「=E2:E5」と入力すると、その範囲の値が下方向にスピルで表示されます。そして、スピルの結果を表示しているセル(F2)を指す数式は「=F2#」となります。

セルF2に「=E2:E5」と入力します(②)
セルE2~E5の値がスピルで表示されました(③)
セルG2に「=F2#」と入力します(④)
セルE2~E5の値がスピルで表示されました(⑤)

 実は、この「=F2#」はドロップダウンリストの[元の値]に指定可能です。試しに設定してみましょう。

入力規則を設定するセル範囲を選択して(⑥)、[データ]タブ(⑦)の[データの入力規則](⑧)をクリックします
[元の値]に「=F2#」と入力して(⑨)、[OK]をクリックします(⑩)
ドロップダウンリストが更新されました(⑪)

セル範囲を広げてフィルターする

 しかし、このままでは項目の追加には対応できていません。「=E2:E5」と参照しているので当たり前ですね。“参照する範囲”が固定されている限り、「#」を使っても自動拡張にはなりません。セル範囲を広げて、FILTER関数を利用しましょう。入力規則を変更する必要はありません。

セルF2には「=E2:E5」と入力されているので(⑫)、追加した「出張対応」(⑬)は参照されていません
セルF2の数式を「=FILTER(E2:E100,E2:E100<>"")」と修正します(⑭)
追加した「出張対応」が含まれました(⑮)。スピル範囲演算子で参照するセルG2の結果にも反映されています(⑯)
ドロップダウンリストも更新されています(⑰)

 途中の項目を削除した場合でも、ドロップダウンリストは自動更新されます。FILTER関数は、引数[配列]に抽出対象の列、[含む]に条件を指定することで、必要なセル範囲を取り出す関数です。

 今回は、セルE2~E100までを[配列]と指定し、不要な空白セルを取り除くために[含む]に「E2:E100<>""」と条件を指定しました。

FILTER関数の構文。引数[配列]には対象のセル範囲、[含む]には[配列]から抽出する条件を指定します。[空の場合]には条件に一致するデータがない場合に表示する値を指定できます(省略可能)

 入力規則は、固定のセル範囲で管理するものという発想を見直してみましょう。スピル範囲演算子「#」を組み合わせれば、項目の増減に強いドロップダウンリストを簡単に作成できます。

 メンテナンスの省力化におすすめのテクニックです。