イラレとエクセルと鉄板焼きで日本脱出計画!

イラレとフォトショとエクセルとCADと少しのWEB知識と焼きそばとたこ焼きとお好み焼きと・・・日本脱出を計画中。

エクセル リスト 入力規則 変化 連動 段階

入力規則でリストの作成はできる

「元の値」を

・「,」区切りで打ち込む

・定義した名前の範囲があるときは「=定義した名前」

・直接範囲をドラッグして指定

このやり方は一般的な方法。

 

だけど、そのリストを変化させたいときがある

段階的なリストを作成したいときがある

 

例えば

都道府県を選ぶ ⇒ その市町村を選ぶ

会社の支店を選ぶ ⇒ 支店の社員を選ぶ

カテゴリを選ぶ ⇒ カテゴリに属する商品を選ぶ

とか。

 

そんなときは、入力規則の「元の値」の欄に

「=indirect(*****)」を使う

「*****」は範囲を指定する文字列。

このリストとして選びたい範囲を変化させればよい。

例えばLOOKUPで参照させる

 

A1セルは、B3からB7の「あ~お」を選択するリスト

f:id:flying-porco:20160310234758j:plain

 

このリストは一般的な方法で直接ドラッグして範囲を指定するとする

f:id:flying-porco:20160310234955j:plain

 

次のD1セルは、A1セルで選んだ結果によって参照範囲を変化させたい

あ:「あ-1~10」、い:「い-1~10」といったように。

f:id:flying-porco:20160310234944j:plain

 

D1セルのリストの作り方が、ポイント。

「元の値」には下の数式を入力する。

=INDIRECT(VLOOKUP($A$2,$B$4:$C$8,2,FALSE))

準備として、VLOOKUPで参照させる「範囲」を「文字列」でC列に書いておく。

 

A1セルで選んだ結果、

D1セルのリストの参照先がVLOOKUPで変化することになる

f:id:flying-porco:20160310235444j:plain

「元の値」でVLOOKUPさせずに、VLOOKUPの結果をC1に表示させて、

=INDIRECT($C$1)

とすることもできる

実際にはこっちの方がわかりやすいかな。

 

EX

選択するリストの数が増える可能性もある場合とか

選択するリストの範囲が変化する場合は、

 

「範囲を指定する文字列」を関数で表示させればOK

COUNT,COUNTIF,ROW 関数とかを使って

「”シート名!$”&<列>&"$"&<行>"&":$"&<列>&"$"&<行>

といったように。

 

INDIRECTを使えば、

無駄な空白セルを選択リストに入れさせないこともできるし、

選択したいー

 商品の数が2つのときは、選択できるものが2つ

 商品の数が5つになれば、選択できるものが5つ

と変化させることもできる。

増えていくデータベースに対応させることができる。