Microsoft Excelの2010年にダイナミックカスケードドロップダウン(INDIRECT()問題を回避取得)
依存ドロップダウンボックスのカスケードは、楽しく一般的なトリックであり、2番目のドロップダウンリストで、最初のドロップダウンボックスでの選択に基づいてオプションを変更できます。これは通常、INDIRECT()関数を使用して実行されます。
もう1つの一般的なトリックは、動的な名前付き範囲の数式を使用して、列に項目を追加するときに自動的に調整される名前付き範囲を作成することです。非常に便利。
問題:*これらの2つの「トリック」は一緒に機能しません。動的な名前付き範囲の数式を使用してチームのリストを作成し、その名前付き範囲をセルA1のDVリストのソースとして使用する場合、INDIRECT(A1)メソッドを使用して同じ名前の依存する名前付き範囲を選択することはできません。 A1で選択したテキストとして。
解決策:*回避策は、動的な名前付き範囲の数式をまったく作成しないことです。代わりに、すべての動的アクティビティを依存データ検証の「ソース」式に移動します。
セットアップ:
1.名簿シートでは、すべてのリストが列に並んで表示され、次のように設定します。
{空} 2。上記のように、A1をクリックし、その名前を名前ボックスに入力して、AnchorCellという名前の範囲を作成します。
これにより、後でExcel2003でも機能するデータ検証式を作成できます。
-
CTRL-F3を押し、次のRefersTo式で名前を定義することにより、Teamsと呼ばれる動的な名前付き範囲を作成します。
= OFFSET(Rosters!$ A $ 1 、、、 1、COUNTA(Rosters!$ 1:$ 1))
これにより、他に何も変更することなく、いつでも新しい列(チーム)を追加できます。すべてが機能し続け、新しいチームも含まれます。
注:空白の列はありません。これはリファレンスシートです。整理してください。
{空} 4。次に、ここでは特別なことは何もありません。名前付きrangeTeamsを列のリストソースとして使用します。Selections*シートのプライマリデータ検証:
適用されると、名簿シートの行1のチームのリストが表示されます:
{空} 5。そして、これが魔法です。 B2のデータ検証リスト式は、OFFSET()関数とMATCH関数を使用してすべての面倒な作業を行い、Rosters *シートのrow1の列Aで選択されたチームを見つけ、その列の項目のみのドロップダウンを作成します。 B2では、DV式は次のようになります。
OFFSET(AnchorCell、1、MATCH($ A2、Teams、0)-1、COUNTA(OFFSET(AnchorCell 、、 MATCH($ A2、Teams、0)-1、50、1))-1、1)パラメータがわかりやすいように、オフセットに関するヘルプファイルを読むのに少し時間をかけます。
= OFFSET(参照、行、列、[高さ]、[幅])
{空} 6。適用されると、セカンダリリストは列Aセルで行われた選択に基づいてそれ自体を作成します: