先日このようなツイを見かけた。
Excelクラスタの皆さん、単一セル内でドロップダウンリストを多重に連動させる方法分かりますか…
— しいこふは現実化する (@i_siecof) March 16, 2019
これ当社で作った人いて、スゲーてなってるんですけど既にその人退職して行方知れずに…
おもしろい。血が騒いだので急いで仕上げて初のGif動画撮影なんぞしてみてツイ。
自分の観測範囲では3番目には投稿できたのではないか。
そのネタを紹介します。
とりあえず完成品
昨日ツイした動画から少しだけブラッシュアップしました。
部署を選択すると、部署を選択した同一セルで部署に所属する従業員が選択出来るというものです。
ネタ一覧
今回の機能を実現するに当たって使用したのは
・ 名前定義
・ 入力規則 + Indirect関数
以上2つの機能です。
ではどうやって実現したか確認してみましょう。
名前定義
まずは名前定義です。
名前定義とはセル範囲に名前をつけて、数式内で参照することが出来る機能です。
わかりにくいですね。
以下の例ではセル範囲G2:G4に「売上」という名前を定義しています。
sum関数の引数に名前定義をした「売上」を指定すると「売上」=G2:G4なのでG2:G4セルをsum関数の引数に指定したことになります。
今回の例ではまず「部署」という名前を定義します。
次にそれぞれの部署名「経理」「人事」「総務」の名前を定義します。
定義名とその要素が表になっている場合はこちらの「選択範囲から作成」から作成すると一括で楽に名前定義することが出来ます。
これで名前定義の設定は完了です。
次は設定した名前を入力規則で利用してみます。
入力規則 + Indirect関数
ドロップダウンリストで入力の補助を行うには 「入力規則」を利用します。 セルI2に下記のような入力規則を設定しました。
セルJ2には下記の数式を記載しています。
Indirect関数
Indirect(参照文字列,[参照形式])
引数 | 内容 |
---|---|
参照文字列 | 必ず指定します。A1 形式、R1C1 形式の参照、参照として定義されている名前が入力されているセルへの参照、または文字列としてのセルへの参照を指定します。参照文字列に適切なセル参照を指定していない場合、エラー値 #REF! が返されます。 |
参照形式 | 省略可能です。参照文字列で指定されたセルに含まれるセル参照の種類を、論理値で指定します。省略もしくはtrueを指定するとA1を形式で指定。falseを指定した場合はR1C1形式を指定。 |
普通にリストの入力規則を設定する場合は下記のようにセル範囲を指定します。 そこに名前定義で設定した名前を記載することでセル範囲を直接書く代わりにしています。ただそのまま名前を書いてもExcelがセル範囲と認識できませんので、Indirect関数を通すことで名前定義をセル範囲に変換してExcelが認識できるようにしています。
まとめ
今回のような機能を実現するときって2段階にするのが普通なのかと思っていたので、1つのセルで多重連動させるというアイデアにまず驚かされました。アイデア次第で色々出来るもんです。
良い頭の体操になりました。
ブラッシュアップに際して はけたさんとガンバルンバさんの案を参考にさせて頂きました。
エクセルの単一セル内でドロップダウンリストを多重に連動https://t.co/gHVOtpIroo
— はけた@Excel最高の学び方発売中 (@excelspeedup) March 16, 2019
こんな感じかな?
— ガンバルンバ (@Nashdesu) March 16, 2019
ぽいのは出来たけどhttps://t.co/3mqSzOgb5W pic.twitter.com/DT9C7G6pMf