マクロなし縛りでドロップダウンリストの項目を切り替える
マクロなし縛りでドロップダウンリスト項目を動的に切り替える
「マクロなし縛り」でExcelでの様式づくりをせざるを得なくなったので、久しぶりに関数であれこれやってみた。
ろくにワークシート関数も覚えていないのにマクロを覚えてしまったために、「欲しい機能は自分で作る」みたいになっていた。達人が見たら「そんなもん、ワークシート関数使ったら一発やろがぼけー」状態だったかも知れん。
せっかくの機会なので、ちょっとまじめにExcelのワークシート関数を使ってみた。
「データの入力規則」リストの切り替え
ユーザに変なデータ入力をさせないために、よくお世話になる「データの入力規則」。
特に、ドロップダウンリストで項目を選択させることのできる「リスト」機能は重宝する。
このリストの項目を条件によって切り替える、ということをやってみた。
準備
ワークシート上に、リスト用の表を2つ作る。
1つ目のリストには「フラワーライン」と名前を定義し、
2つ目のリストには「反フラワー」と名前を定義しておく。
INDIRECT関数
んで、
名前だけは知っていたけど使ったことなかったExcel関数選手権
でもやったら結構いいところまで行くんじゃないか、と個人的には思っているINDIRECT関数ですよ。
基本的には、
=INDIRECT(セル番地)
の形で、セル参照を返してくれるという関数。
たとえば、
こんなふうに、K5セルに「デコスケ」と入力されているときに、
=INDIRECT("K5")
を計算すると、
こんなふうにK5セルの値が返る。
ということは、INDIRECT関数に渡す引数を切り替えてやれば、リスト項目を切り替えることができるということになる。
「データの入力規則」の設定
「元の値」のところを、
=INDIRECT($E$1)
にして、E1セルに「フラワーライン」と入力すると、
リスト項目はこの通り。
E1セルに「反フラワー」と入力すると、
リスト項目が変わった。
おわりに
入力された値に応じて動的に何かを切り替える、となると、安易にWorksheetのイベントマクロなんかで済ませようと考えがちだけれど、たまに「マクロなし縛り」という状況に追い込んでみると
名前は知っていたけど使ったことなかったExcel関数
が使えるようになるきっかけになるかも知れない、と思いました。
ワークシート関数もしっかりマスターしないといけないなあ。