
ドメインと呼ばれる値を持つ列が 1 つあり、ロールと呼ばれる値を持つ別の列があります。
ドメインには複数の役割がある場合があります。例:
Domain Role
A XYZ
A ABC
B DEF
C DHG
A LKJ
B OIO
C CND
等
同じシートまたは別のシートの列ドメインに一意の値を含む列があり、次の列ではドメイン列の選択に基づいてドロップダウンを表示する必要があります。たとえば、ある行のドメインドロップダウンで誰かが B を選択した場合、同じ行のロール列のドロップダウンには、上記ロールの B 値に固有の値 (つまり DEF と OIO) のみが表示される必要があります。
答え1
マスター テーブルを並べ替えて、両方のテーブルを同じワークシートに配置することが許容されると仮定すると、最も簡単な解決策は、比較的短いデータ検証式を使用することです。
サンプルワークシートを次のように設定しました。
セル内ドロップダウン リストのデータ検証のソースとして次の数式を入力しますE2
:
=INDEX($B:$B,MATCH(D2,$A:$A,0)):INDEX($B:$B,MATCH(D2,$A:$A,0)+COUNTIF($A:$A,D2)-1)
この数式の優れた点は、先頭に新しい行を挿入したり、最後の行の後に行を追加したりするなど、マスター テーブルの変更に適応することです。
欠点は次のとおりです。
- マスターテーブルは同じワークシート内にある必要があります
- マスターテーブルはソートされている必要があります
- シート上の他のテーブルは、マスターテーブルのドメイン値と一致する値が含まれていないことが保証されない限り、ドメイン列と安全に交差することはできません。
これらすべての制限を克服するための、より複雑なソリューションが存在します。
わかりました。ラジェッシュSを維持するためだけにハッピー(そして彼が間違っていることを証明してください ;-)うーん、いいえ、あなたはしない一意のリストを生成するには配列数式が必要です。または従属/フィルタリングされたリストを生成するソースリストがソートされている場合)、一意のドメイン リストの作成と、D
それを使用する列のドロップダウン検証式を含めるように更新されたワークシートを次に示します。
の通常、配列入力なし入力しC2
て記入する式は次のようになります。
=T(INDEX($A:$A,IFERROR(MATCH(C1,$A:$A,0),ROW())+COUNTIF($A:$A,C1)))
データ検証式は次のとおりD2
です。
=INDEX($C:$C,MATCH("Unique",$C:$C,0)+1):INDEX($C:$C,MATCH("Unique",$C:$C,0)+ROWS(C:C)-COUNTIF(C:C,"")-1)
答え2
依存ドロップダウンを作成する必要があります。
次の手順を実行します:
- B304 に haeder、LISTA と入力し、スクリーンショットに示すように下の行に値を入力します。
- B305:B307 を選択し、範囲を昇順で並べ替えます。次に、この範囲に「ListA」という名前を付けます。
注意 ListB および ListC についても、上記の手順に従ってください。
B304:D304 を選択し、この範囲に ROLE という名前を付けます。
E304 を選択し、[データ] タブに移動して、[データの検証] をクリックします。
設定タブで、リストの選択を許可し、ソースに書き込みます
=Role
。セル ポインターをセル G304 に配置し、再度データの検証に移動します。
=INDIRECT($E$304
ソーステキストボックスに「)」と入力します。
注記、 最初のドロップダウンからドメイン名を選択するとすぐに、スクリーンショットに示すように、Excel は隣接するドロップダウンで関連するロールをフィルター処理します。
注意
必要に応じてセルアドレスを調整します。
必要に応じて、LISTA、LISTB、LISTC を A、B、C に置き換えてください。