プロが教えるわが家の防犯対策術!

Excelでの2つのリストの関連付け
Excelでリストを2つ作り、一つめの選択次第で二つめのリストの選択肢が変わるようにしたいです。

現在は他の方の質問(http://oshiete.goo.ne.jp/qa/4850624.html)を参考にし、名前定義とINDIRECTを使う方法は分かりました。
しかしこの方法ですと(既に名前が定義されている)「区分1」を(新たに決めた別の名称)「区分A」などに変更すると、その都度毎回名前の定義をやり直さないと機能しなくなります。

自分だけが使うのなら良いのですが、Excel初心者の人たちも使うので出来ればもっと簡単にしたいのです。
どうか2つのリストを関連付ける方法を教えてください。

なお、同じようなことが出来るなら、別に入力規制のリストに拘るつもりはありません。
他に(マクロ以外で)2つのセルの選択肢をうまい具合に関連付ける方法があるならそれでももちろん大丈夫です。
どうぞよろしくお願いします。

A 回答 (2件)

例えばA1セルから下方に最初の選択のできるリストボックスを作りB1セルから下方ではA列で選択したデータに沿ったリストが表示されるようにするためには、名前などの定義を使わずにそれを行うとしたら次のような方法にします。


例えばシート2にはリストボックスで使用するデータがあるとして、その作成は次のようにします。
シート2のA1セルから例えばF1セルまでにはシート1のA列で使用するリスト表示に使う文字列を入力します。その2行目から下方には1行目で入力した文字列に対応してシート1のB列のリストで表示させる内容の文字列を並べます。ここでは仮に10行目までその文字列が入力されるとします。
これでシート2の作業は終わります。
次にシート1での作業ですがA列でのリストの作成ですがA1セルから下行を選択してから「データ」タブの「データの入力規則」で「リスト」さらに元の値には次の式を入力します。

=INDIRECT("Sheet2!A1:F1")

B列でも同様にリストで元の値には次の式を入力します。

=INDEX(INDIRECT("Sheet2!A1:F10"),2,MATCH(A1,INDIRECT("Sheet2!A1:F1"),0)):INDEX(INDIRECT("Sheet2!A1:F10"),10,MATCH(A1,INDIRECT("Sheet2!A1:F1"),0))

これで名前の定義などを使わないでリストを作ることができます。上記のような方法を参考にされてはいかがでしょう。

この回答への補足

回答ありがとうございます。
大体は理解できたのですが、B列のリストの元の値の数式が難しいのでもう少し質問させてください。

最初に選択するリストがA2からG2まで、
さらに二番目のリストがその上の行、A1からG1まで

の場合(つまりリストの行と列が入れ替わり、さらに最初に選択するリストの方が下にある場合)、
二番目のリストの元の値はどのように変化するのでしょうか。
お手数お掛けしますが、宜しければ教えてください。

補足日時:2010/09/24 12:31
    • good
    • 2
この回答へのお礼

ありがとうございます。KURUMITOさんの方法で出来ました。
補足に関しては、INDEXとMATCH関数で検索すれば色々出てました。
MATCH関数の「A1」の部分を変えるだけでしたね。ちゃんと調べず聞いてごめんなさい。

助かりました。ありがとうございました!

お礼日時:2010/09/24 13:33

大項目の名前を変更しても自動的に対応する小項目の範囲を取得するならINDEX関数を使うのが簡単です。



添付画像のようなリストがA1:D6セルにあり、大項目をF2セル以下に入力し、小項目のリストをG2セル以下に設定するなら、G2セルの入力規則で「リスト」の元の値の欄に以下の数式を入力して下さい。

=INDEX($A$2:$D$6,,MATCH(F2,$A$1:$D$1,))
「Excelでの2つのリストの関連付け」の回答画像2
    • good
    • 0
この回答へのお礼

ありがとうございます。
急いでいるもので、ちょっとこの方法はまだ試していませんが、次の出勤時に試してみます。

ありがとうございました!

お礼日時:2010/09/24 13:34

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!