目次
少し前に、Excelのデータ検証の機能を調べ始め、カンマ区切りのリスト、セルの範囲、または名前の付いた範囲に基づいて、Excelで簡単なドロップダウンリストを作成する方法を学びました。
今日はこの機能を詳しく調べて、最初のドロップダウンで選択された値に応じて選択肢を表示するカスケードドロップダウンリストを作成する方法を学びます。 別の言い方をすれば、別のリストの値に基づいてExcelデータ検証リストを作成することになります。
Excelで複数の従属ドロップダウンを作成する方法
Excelで複数レベルの従属ドロップダウンリストを作成するのは簡単です。 必要なのは、いくつかの名前付き範囲とINDIRECT式だけです。 この方法は、Excel 365 - 2010以前のすべてのバージョンで機能します。
1.ドロップダウンリストの項目を入力する
まず、ドロップダウンリストに表示させたい項目を、それぞれのリストごとに別々の列に入力します。 たとえば、果物輸出業者のカスケード式ドロップダウンを作成し、ソースシートのA列( 果実 ) には、最初のドロップダウンの項目が含まれ、他の3つの列には、依存するドロップダウンの項目がリストアップされます。
2.名前付き範囲の作成
ここで、メインのリストと従属リストにそれぞれ名前をつける必要があります。 名 称 マネージャー ウィンドウ( 計算式 tab> ネームマネージャー> New) に直接入力するか ネームボックス .
注:上のスクリーンショットのように、最初の行が列のヘッダーのような場合は、名前付きの範囲に含めてはいけませんのでご注意ください。
詳細な手順については、「Excelで名前を定義する方法」をご覧ください。
覚えておきたいこと
- 最初のドロップダウンリストに表示される項目は、例えば次のような一語のエントリでなければなりません。 アプリコット , マンゴー , オレンジ 2つ、3つ、またはそれ以上の単語で構成される項目がある場合は、複数単語の項目を持つカスケードドロップを作成する方法を参照してください。
- 従属リストの名前は、主リストのマッチする項目と正確に一致しなければなりません。 たとえば、" "メソッドを使用したときに表示される従属リストは、" "メソッドを使用したときに表示されます。 マンゴー 「という名前にする必要があります。 マンゴー .
終了したら、Ctrl+F3キーで 名 称 マネージャー ウィンドウを開き、すべてのリストの名前と参照先が正しいかどうかを確認します。
3.最初の(メインの)ドロップダウンリストを作成する
- 同じスプレッドシートまたは別のスプレッドシートで、主ドロップダウンリストを表示させたいセル(複数可)を選択します。
- に行ってみてください。 データ タブをクリックします。 データバリデーション を選択し、通常の方法で名前付き範囲に基づくドロップダウンリストを設定します。 リスト 下 許可する に範囲名を入力し ソース ボックスを使用します。
詳細な手順については、「名前付き範囲に基づくドロップダウンリストを作成する」を参照してください。
その結果、ワークシートにこのようなドロップダウンメニューが表示されます。
4.依存関係のドロップダウン・リストを作成する
従属ドロップダウンメニューのセルを選択し、前のステップで説明したように、再びExcelデータ検証を適用します。 しかし今回は、範囲の名前の代わりに、次の数式を 出典 のフィールドを使用します。
=INDIRECT(A2)
ここで、A2 は最初の(主)ドロップダウンリストのあるセルです。
セルA2が現在空の場合、エラーメッセージ" Sourceは現在エラーと評価されています。 このまま続けますか? "
安全にクリックする はい そして、最初のドロップダウンメニューから項目を選択するとすぐに、それに対応する項目が、2番目の依存するドロップダウンリストに表示されます。
5.3つ目の従属ドロップダウンリストの追加(オプション)
必要であれば、2番目のドロップダウンメニューの選択に依存する、または最初の2つのドロップダウンメニューの選択に依存する3番目のカスケードドロップダウンリストを追加することができます。
2番目のリストに依存する3番目のドロップダウンのセットアップ
このタイプのドロップダウンリストは、先ほど2番目の従属ドロップダウンメニューを作ったのと同じ方法で作ることができます。 ただ、カスケードドロップダウンリストを正しく動作させるために不可欠な、上で説明した2つの重要なことを忘れないでください。
例えば、B列でどの国が選択されたかに応じてC列に地域のリストを表示したい場合、国ごとに地域のリストを作成し、2番目のドロップダウンリストに表示される国の名前と同じ名前を付けます。 例えば、インドの地域のリストは「インド」、中国の地域のリストは「中国」、というように名前を付けなければなりません。
その後、3番目のドロップダウンのセル(この例ではC2)を選択し、次の数式でExcelデータバリデーションを適用します(B2は、国のリストを含む2番目のドロップダウン・メニューのあるセルです)。
=INDIRECT(B2)
これで、選択するたびに インド をクリックすると、3つ目のドロップダウンに以下の選択肢が表示されます。
注:表示される地域のリストは国ごとに異なりますが、最初のドロップダウンリストの選択には依存しません。
最初の2つのリストに依存する3番目のドロップダウンを作成します。
もし、1番目と2番目のドロップダウンリストの両方の選択に依存するカスケードドロップダウンメニューを作成する必要がある場合は、この方法で進めてください。
- 最初の2つのドロップダウンの単語の組み合わせに対応する名前付き範囲のセットを追加で作成します。 たとえば、次のようになります。 マンゴー、オレンジなど を1番目のリストに、そして インド、ブラジルなど という名前の範囲を作成します。 マンゴーインド , マンゴブラジル , オレンジインド , オレンジブラジル これらの名前には、アンダースコアやその他の付加的な文字を含んではならない。
=INDIRECT(SUBSTITUTE(A2&B2," ","))
ここで、A2 と B2 はそれぞれ、1番目と2番目のドロップダウンを含む。
その結果、3つ目のドロップダウンリストには、その地域に対応する 果実 と 国名 は、最初の2つのドロップダウンリストで選択されています。
Excelでカスケード式のドロップダウンボックスを作成する最も簡単な方法です。 しかし、この方法にはいくつかの制限があります。
この手法の限界
- プライマリドロップダウンリストの項目は、1単語の項目である必要があります。 複数単語の項目を持つカスケードドロップダウンリストを作成する方法を参照してください。
- この方法は、メインのドロップダウンリストのエントリに、ハイフン (-) やアンパサンド (&) などの範囲名で使用できない文字が含まれている場合には使用できません。
- この方法で作成されたドロップダウンメニューは、自動的に更新されません。 つまり、ソースリストの項目を追加または削除するたびに、名前付き範囲の参照を変更する必要があります。 この制限を克服するために、動的カスケードドロップダウンリストを作成してみてください。
複数単語の入力が可能なカスケード式ドロップダウンリストの作成
上記の例で使用したINDIRECT数式は、1単語の項目しか扱えません。 例えば、数式=INDIRECT(A2)はセルA2を間接的に参照し、参照したセルと同じ名前の範囲を正確に表示します。 しかし、Excelの名前にはスペースが使えないため、複数単語の名前に対してこの数式は機能しません。
解決策は、3つ目のドロップダウンを作成したときのように、INDIRECT関数とSUBSTITUTEを組み合わせて使用することです。
があるとします。 ウォーターメロン この場合、ウォーターメロンの輸出業者のリストを、スペースを入れずに1つの単語で指定します。 スイカ .
次に、2番目のドロップダウンについて、セルA2の名前からスペースを取り除く以下の数式で、Excelデータバリデーションを適用します。
=indirect(substitute(a2," ","))
プライマリードロップダウンリストの変更を防止する方法
ユーザーがすべてのドロップダウンリストを選択した後、気が変わって最初のリストに戻り、別の項目を選択した結果、1番目と2番目の選択項目が不一致になっています。 これを防ぐために、2番目のリストで選択が行われると同時に、1番目のドロップダウンリストの変更をブロックすることができます。
これを行うには、最初のドロップダウンを作成するときに、2番目のドロップダウンメニューでいずれかの項目が選択されているかどうかをチェックする特別な数式を使用します。
=IF(B2="", Fruit, INDIRECT("FakeList"))
B2には、2つ目のドロップダウンである " 果実 「は最初のドロップダウンメニューに表示されるリストの名前、" フェイクリスト 「は存在しない偽名です。
これで、2番目のドロップダウンリストで何らかの項目が選択されている場合、ユーザーが最初のリストの横にある矢印をクリックしても、選択肢は表示されません。
Excelで動的なカスケード接続のドロップダウンリストを作成する
動的なExcel依存のドロップダウンリストの主な利点は、ソースリストを自由に編集して、ドロップダウンボックスがその場で更新されることです。 もちろん、動的なドロップダウンリストを作成するには、少し時間がかかり、より複雑な数式が必要ですが、一度セットアップすれば、このようなドロップダウンメニューは本当に楽しく作業できるので、価値のある投資だと私は考えています。
Excelでは、OFFSET関数、INDIRECT関数、COUNTA関数、INDEX MATCH関数などを組み合わせて、ダイナミックドロップダウンを作成することができます。 後者は、多くの利点があり、私が好んで使用している方法です。
- 主リストと従属リストに項目がいくつあっても、3つの名前付き範囲のみを作成する必要があります。
- リストには、複数単語の項目や特殊文字が含まれることがあります。
- 各欄に記載される項目数は、異なる場合があります。
- エントリーのソート順は関係ありません。
- 最後に、ソースリストのメンテナンスと変更が非常に簡単であることです。
さて、理論はもういいとして、実践に移ろう。
1.元データを表に整理する
いつものように、まずドロップダウンリストの選択肢をワークシートに書き出します。 今回は、ソースデータをExcelのテーブルに格納します。 データを入力したら、すべてのエントリーを選択して、Ctrl + Tキーまたは インサート tab> テーブル にテーブルの名前を入力します。 テーブル名 ボックスを使用します。
最も便利で視覚的な方法は、最初のドロップダウンの項目をテーブルのヘッダーとして保存し、従属ドロップダウンの項目をテーブルデータとして保存することです。 以下のスクリーンショットは、私のテーブルの構造を示しており、名前は exporters_tbl - は、果実名がテーブルヘッダーとなり、対応する果実名の下に輸出国リストが追加されています。
2.エクセル名の作成
ソースデータの準備ができたので、次はテーブルから正しいリストを動的に取得する名前付き参照をセットアップします。
2.1.テーブルのヘッダー行(メインドロップダウン)の名前を追加する
テーブルヘッダを参照する新しい名前を作成するには、それを選択してから 計算式 > 名 称 マネージャー > 新規 または Ctrl + F3 を押してください。
Microsoft Excelは、内蔵の表参照システムを使用して、名前に table_name[#ヘッダー] のパターンになります。
何か意味のある、覚えやすい名前をつけてください(例)。 フルーツリスト をクリックします。 よっしゃー .
2.2.最初のドロップダウンリストを含むセルの名前を作成する
まだドロップダウンがないことは分かっています :) しかし、最初のドロップダウンをホストするセルを選択し、そのセルの名前を作成する必要があります。なぜなら、この名前を3番目の名前の参照に含める必要があるからです。
例えば、最初のドロップダウンボックスはSheet 2のセルB1にあるので、次のような簡単でわかりやすい名前を付けます。 フルーツ :
ヒント:適切なセルリファレンスを使用して コピードロップダウンリスト をワークシートに貼り付けてください。
この記事を投稿してくれたKarenに感謝します。
ドロップダウンリストを他のセルにコピーする場合は、最初のドロップダウンリストがあるセルの名前を作成するときに、混合セル参照を使用します。
ドロップダウンを他のアプリケーションに正しくコピーするには コラムス (つまり右側)の場合は、= Sheet2!B$1 のように、相対列($記号なし)と絶対行($付き)の参照を使用します。
その結果、B1 の従属ドロップダウン・リストはセル B2 に表示され、C1 の従属ドロップダウンは C2 に表示され、といった具合になります。
また、ドロップダウンを他へコピーする予定がある場合は 漕ぎ手 (つまり、列の下方向)であれば、= Sheet2!$B1 のように絶対列($付き)と相対行($なし)の座標を使用します。
ドロップダウンのセルを任意の方向にコピーするには、= Sheet2!B1 のような相対参照($記号なし)を使用します。
2.3.依存メニューの項目を取得するための名前を作成する
前の例で行ったように、それぞれの依存リストに一意な名前を設定するのではなく、 1つの めいめいほうしき この数式を使用する主な利点は、最初のドロップダウンリストに新しい項目を追加するたびに新しい名前を作成する必要がないことです。 この数式は、最初のドロップダウンリストの選択に応じて、2番目のドロップダウンリストの正しいリストを取得します。
この数式で新しいExcel名を作成します。
=INDEX(exporters_tbl,,MATCH(fruit,fruit_list,0))
どこで
exporters_tbl
- テーブルの名前(ステップ1で作成)。フルーツ
- 最初のドロップダウンリストを含むセルの名前 (ステップ 2.2 で作成)。フルーツリスト
- テーブルのヘッダー行を参照する名前 (手順 2.1 で作成)。
名前をつけた exporters_list は、以下のスクリーンショットのようになります。
さて、これで作業の大部分は完了です!最後のステップに進む前に、ネームマネージャー(Ctrl + F3)を開き、名前と参照を確認するのもよいでしょう。
3.エクセルデータバリデーションの設定
ここが一番簡単で、2つの数式を設定した後、通常の方法でデータバリデーションを設定します ( データ tab> データバリデーション ).
- 最初のドロップダウンリストの「ソース」欄に =フルーツリスト (手順2.1で作成した名前)を使用します。
- 依存関係のドロップダウン・リストには、次のように入力します。 =輸出業者リスト (手順2.3で作成した名前)。
これで、ダイナミックカスケードドロップダウンメニューが完成し、ソーステーブルへの変更を反映して自動的に更新されるようになりました。
この動的なExcelドロップダウンは、他のすべての点で完璧ですが、1つの欠点があります。ソーステーブルの列が異なる数の項目を含む場合、空白の行がこのようにメニューに表示されます。
ダイナミックカスケードドロップダウンから空白行を除外する
ドロップダウン・ボックスの空白行を削除したい場合は、さらに一歩進んで、依存する動的ドロップダウン・リストを作成するために使用するINDEX / MATCH式を改善する必要があります。
2つのINDEX関数(1つ目は左上のセルを取得し、2つ目は範囲の右下のセルを返す)を使うか、INDEXとCOUNTAを入れ子にしたOFFSET関数を使うことです。 詳しい手順は以下のとおりです。
1.2つの名前を追加で作成する
数式がかさばらないように、まず以下の簡単な数式でヘルパー名をいくつか作っておきます。
- という名前。 col_num をクリックして、選択した列番号を参照します。
=MATCH(fruit,fruit_list,0)です。
- という名前。 全コル で、選択した列(列の番号ではなく、列全体)を参照します。
=INDEX(exporters_tbl,,col_num)
関連項目: Excelで移動平均を計算する:計算式とチャート
上記の式において exporters_tbl
はソーステーブルの名前です。 フルーツ
は、最初のドロップダウンを含むセルの名前であり フルーツリスト
は、テーブルのヘッダー行を参照する名前です。
2.依存ドロップダウンの名前付きリファレンスを作成する
次に、以下のいずれかの数式を利用して、新しい名前(仮に exporters_list2 ) を、依存するドロップダウン・リストで使用します。
=INDEX(exporters_tbl,1,col_num) : INDEX(exporters_tbl, COUNTA(entire_col), col_num)
=OFFSET(INDEX(exporters_tbl,1,col_num),0,0,COUNTA(entire_col))
3.データバリデーションの適用
最後に、従属ドロップダウンを含むセルを選択し、データ検証を適用するために = を入力します。 exporters_list2 (前のステップで作成した名前)を 出典 ボックスを使用します。
下のスクリーンショットは、Excelのダイナミックドロップダウンメニューの結果で、すべての空白行がなくなっています。
注意:上記の数式で作成した動的カスケード接続のドロップダウンリストを使用する場合、2番目のメニューで選択を行った後に1番目のドロップダウンの値を変更することを妨げるものはありません。 2番目のボックスで選択が行われた後に1番目のボックスで変更をブロックするには、VBAまたはこのチュートリアルで提案された複雑な数式を使用することができます。
これは、別のリストの値に基づいてExcelデータ検証リストを作成する方法です。 カスケード・ドロップダウンリストの動作を確認するには、当社のサンプルワークブックを自由にダウンロードしてください。 読んでくださってありがとうございます。
練習用ワークブック(ダウンロード
カスケード接続のドロップダウンのサンプル1-簡単バージョン
Cascading Dropdown Sample 2 - 空白のない上級バージョン