![見出し画像](https://assets.st-note.com/production/uploads/images/168990680/rectangle_large_type_2_ba519f1518afcfcbd413bf121daf791c.png?width=1200)
テーブル参照で動的なリストを作る
こんばんは
現在職場のDXの一環で、既存のExcelブックにVBAをガリガリ書いています
正直、ExcelVBAは苦手で・・・(まだAccessVBAの方が書ける)
実際に使用する人達が関数もVBAも知識なし!と言う状況のため、
手入力は最小限に
関数やVBAのメンテナンスをユーザーが気にしなくていい
フォーマットの変更に柔軟に対応
以上をコンセプトに、「メンテナンス不要」を目指して製作中です
今回は、入力規則のリストの値を動的に参照する方法をご紹介します
入力規則でテーブルを選択してみる
Mac版Excelの入力規則はここにあります
![](https://assets.st-note.com/img/1736566242-5AuxbDJFUtpYc86Ch4HRV2gS.jpg?width=1200)
普通に「データタブ」の「入力規則」でテーブル範囲を選択しても、テーブル名ではなく、セル参照されてしまいます
※リストにする値は別シート「CONFIG」で、「STORE」と言う名前でテーブル化済み
![](https://assets.st-note.com/img/1736179441-tTok64ly80PfrsjzORBqvNHY.png?width=1200)
これではせっかくのテーブル化が台無しなので、
以下の手順でテーブル範囲として参照させます
入力規則にINDIRECTを使って直接入力
「元の値」に以下のように直接入力します
=INDIRECT("テーブル名[見出し]")
今回参照させるテーブル名は「STORE」、見出しも「STORE」なので、
=INDIRECT("STORE[STORE]")
と入力し、「OK」をクリックします。
![](https://assets.st-note.com/img/1736181007-pA0fxkon7gKPh6l239W1TIdq.png?width=1200)
これで、リスト項目の増減があってもメンテナンスは不要
フォーマット変更でテーブルの位置を動かしても影響ありません
![](https://assets.st-note.com/img/1736180295-nYNk6pl4xSXIRyzgQ1V5esOG.png?width=1200)
先日、「リストで選べる値を追加して欲しい」と言われまして、
「あ、そこからなんだ〜」と
テーブルの使い方からレクチャーして、自分でリスト項目を修正できるようになっていただきました