はじめに:ドロップダウンリストって、本当に便利ですか?
Excelでデータを入力してもらう際、「ドロップダウンリスト(データの入力規則)」を設定するのは定番ですよね。

特に「大分類」を選んだら、それに対応した「中分類」が出てきて、さらに「小分類」が…という「連動型ドロップダウン」は、作った側としては「どうだ、便利だろう!」とドヤ顔したくなる機能です。
確かに、ドロップダウンリストには「入力ミスを防ぐ」「表記揺れをなくす」という絶大なメリットがあります。
当ブログ、Excelで暇つぶしでは、これを否定しません。
しかし、「入力速度」という観点ではどうでしょうか?
- セルをクリックする
- ▼ボタンをクリックする
- リストから項目を探してクリックする

1つの項目を入れるのに3アクション。これが大・中・小と3つ続くと、合計9アクションも必要です。
マウスとキーボードを行ったり来たり…この「手の移動」こそが、入力作業における最大のボトルネックなのです。
当ブログの主張はこうです。
「入力スピードを求めるなら、ドロップダウンリストは使うな」
この記事では、家計簿のカテゴリ選択(3階層)を題材に、ドロップダウンリストの作り方(基本・応用)をおさらいしつつ、それらを凌駕する「らくらく入力インターフェース」の代替案を2つ提案します。
本記事では、無料のWeb版Excelを使用して検証および画像の作成を行っています。Windowsはもちろん、MacやLinuxの方もブラウザさえあれば挑戦できます!
今回のターゲット:家計簿データ
前提として、A1:C35に以下のデータがあるものとして進めます。
(筆者は札幌在住なので、生活環境に合わせたリアルな選択肢になっています)
{"食費","スーパー",,"ラルズ","アークス","北海市場","その他";,"コンビニ",,"セコマ","セブン","ファミマ","その他";,"外食",,"ラーメン","牛丼","そば","その他";,,,,,,;"日用品","ドラッグストア",,"サツドラ","ツルハ","その他",;,"ホームセンター",,"ホーマック","ビバホーム","コメリ","その他";,"百円ショップ",,"ダイソー","キャンドゥ","ワッツ","その他";,,,,,,;"交通費","電車",,"JR","地下鉄","市電","その他";,"バス",,"中央バス","じょうてつバス","JRバス","その他";,"車",,"タクシー","レンタカー","その他",}

やりたいことは、「大分類→中分類→小分類」の順でデータを選択・入力することです。
Step 1:【古典】INDIRECTと名前の定義
関数の詳細な仕様については、Microsoft公式のヘルプも参考にしてください。
まずは比較対象として、昔ながらの方法をさらっと紹介します。
Excel 2019以前の環境では、この方法が主流でした。
仕組みは、各カテゴリーの範囲に「名前」を付け、INDIRECT関数でその名前を呼び出すことでリストを切り替えます。
- リスト用の表を別途作成し、「食費」「スーパー」などの範囲に名前を付ける。
(Web版Excelだとこれが大変!) - 入力規則の「元の値」に
=INDIRECT($F$3)のように入力する。

名前の定義(ネームマネージャー)を使用する詳しい方法は、以下の記事で紹介しています。
これで連動リストは作れますが、メンテナンスが大変な上に、入力の手間(9工程)は変わりません。
Step 2:【現代】FILTER関数とスピル
Excel 2021やMicrosoft 365なら、もっとスマートに作れます。
作業用セルにUNIQUEやFILTER関数でリストを動的に生成し、それを参照する方法です。
リスト生成の数式例
- 大分類リスト(E10):
=UNIQUE(A2:A35) - 中分類リスト(G10):
=UNIQUE(FILTER(B2:B35,A2:A35=E3)) - 小分類リスト(I10):
=FILTER(C2:C35,B2:B35=E4)
入力規則には =$E$10# のように「#(スピル範囲演算子)」を指定します。
しかし、名前の定義が不要で非常に楽ですが、やはり「マウス操作が必須」という弱点は克服できていません。
代替案1:【数値入力式】キーボードから手を離すな!
ここからが本題です。
マウスを使うから遅いのです。キーボードだけで完結させましょう。
【※注意】
今回はロジックの理解を優先するため、あえてエラー処理はしていません。
「リストにない数値を入力した場合」や「文字列を入力した場合」などは想定していませんので、実務で導入する際は入力規則などで制限をかけることをおすすめします。
「画面にメニューを表示し、番号を入力させる」
これであれば、矢印キーやマウス移動は不要。テンキーだけでサクサク入力が可能になります。
「数値を打つ」→「Enter」を3回繰り返すので、合計「6工程」にはなりますが、ホームポジションから手を動かさなくて済むため、体感速度は段違いです。
仕組みの構築
入力セルをD列(番号用)とE列(表示用)に分けます。
そして、F3:G6の範囲に「今選ぶべきリスト」を動的に表示させます。
1. 作業用エリアの作成
まず、E10セル等の作業エリアに、FILTER関数でリストを作成します(Step 2と同じ要領です)。

次に、その隣(D10セル等)に =SEQUENCE(ROWS(E10#)) を入れて、1から始まる連番を振っておきます。

すると、このような表が作業エリアにできあがります。
2. 入力セルの数式(XLOOKUP)
続いて、E3セル(大分類の表示)には、以下の数式を入れます。
=XLOOKUP(D3,D10#,E10#,"←←←←←←")
【解説】
XLOOKUP(検索値, 検索範囲, 戻り範囲, [見つからない場合])
D3に入力された数字を、D10#(番号リスト)から探し、対応するE10#(項目リスト)を表示します。
また、未入力時は「←←←←←←」と表示して、入力を促すのがポイントです。

3. メニューの動的表示(ここがキモ!)
入力が進むにつれて、F3:G6に表示するメニューを「大分類→中分類→小分類」と切り替えたいですよね。
そこで、CHOOSE関数を使います。
=CHOOSE(SUM((D3:D5<>"")*1)+1,
HSTACK(D10#,E10#),HSTACK(F10#,G10#),
HSTACK(H10#,I10#),HSTACK("","入力完了"))
【解説】
この数式は少し複雑なので分解してみましょう。
1. SUM((D3:D5<>"")*1)+1
まず、D3からD5に入力されているセルの数を数えています。
0個なら「1」、1個なら「2」…となり、これが「今何段階目か?」を表すインデックスになります。
2. HSTACK(D10#,E10#)
番号リストと項目リストを横に連結して、1つのメニュー表を作っています。

※HSTACK関数はExcel 2024およびMicrosoft 365、またはWEB版Excelで使用できる新関数です。
古いバージョンで連結したい場合は、以下の記事を参考にしてください。
3. CHOOSE(インデックス, メニュー1, メニュー2...)
インデックス番号に応じて、表示するメニュー(HSTACKで作った表)を切り替えます。

これで「1」と打てば「食費」が表示され、即座にメニューが「スーパー、コンビニ…」に切り替わる、インタラクティブな画面の完成です!
代替案2:【チェックボックス式】究極のワンクリック
「いや、私はマウス派だ。でも9回もクリックしたくない」
そんなあなたには、Microsoft 365の新機能「チェックボックス」を使った方法を提案します。

目標は「3工程」。究極のショートカットです。
そもそもチェックボックスとは?
今回使用するのは、Microsoft 365などで追加された新しい「セルのチェックボックス」機能です。
これは、以前のような面倒な設定やVBA(マクロ)は一切不要で、セルの中に直接「オン/オフ」のスイッチを作れる機能です。
仕組みは非常にシンプルで、
という「論理値」として扱われます。

これだけで、IF関数やFILTER関数と連携して、「チェックした行だけ色を変える(条件付き書式)」や「完了したタスクを取り消し線にする(ToDoリスト)」といった仕組みが簡単に作れるのです。
仕組みの構築
まず、C列とH列(結果表示)の間に、4列挿入してD:G列を作ります。
D2:G2セルに 1, 2, 3, 4 と番号を振っておきます。
そして、D3:G5の範囲にチェックボックスを挿入します。
(挿入タブ → チェックボックス)

入力セルの数式(FILTER)
H3セル(大分類)に以下の数式を入れ、H4, H5セルにもコピーします。
=FILTER($D$2:$G$2,D3:G3,"")
【解説】
チェックボックスの実体は TRUE/FALSE という論理値です。
FILTER関数は、条件がTRUEの列だけを抽出します。
つまり、「チェックを入れた列の番号(見出し)」が抽出されるのです。

※今回は分かりやすく数値(1, 2…)を表示させていますが、これを応用して項目名を表示させたり、H列をVLOOKUPの検索値にしたりと自由自在です。
また、H3:H5セルの数値表示が不要であれば、列を非表示にするか、文字色を白にするなどの処理をしてください。
【注意点】
この方法は「リストの項目数が少ない(5個程度)」場合にのみ有効です。
項目が20個もあると、チェックボックスだらけになって逆に操作性が落ちます。
また、この数式では「2つ同時にチェックした時」のエラー処理はしていません。最初の1つだけを有効にしたい場合は、=TAKE(FILTER(...), 1) のようにTAKE関数を組み合わせると良いでしょう。
まとめ:常識を疑って効率化しよう
今回はドロップダウンリストの代替案として、2つの方法を紹介しました。
- 数値入力式: メニューを見ながらテンキー連打。リズムよく入力できる。
- チェックボックス式: 視認性が高く、ワンクリックで確定。項目が少ない時に最強。
「入力規則=ドロップダウンリスト」という固定観念を捨てて、
「どうすれば入力する人が楽になるか?」を考えると、Excelの設計はもっと自由で楽しいものになります。
ぜひ、あなたの家計簿や業務シートにも、この「おもてなし入力フォーム」を取り入れてみてください!



