[[20250708195202]] 『「ドロップダウンリストの連動」[やすあー] につ』(うるん) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) |

| 全文検索 | 過去ログ ]

 

『「ドロップダウンリストの連動」[やすあー] について』(うるん)

投稿
[[20240417153027]] 『ドロップダウンリストの連動』(やすあー) 
について...

みなさま、お力添えをお願いします。

     A    B
 1  あ  あA
 2  あ  あB
 3  あ  あC
 4  あ  あD
 5  あ  あE
 6  あ  あF
 7  あ  あG
 8  あ  あH
 9  い  いA
10  い  いB
11  い  いC
12  い  いD
13  い  いE
14  い  いF
15  う  うA
16  う  うB
17  う  うC
18  う  うD
19  え  えA
20  え  えB
… …  …

以上のような表シートがあるとして
入力シートの
?@A2セルにドロップダウンで「あ〜え」の選択ができ
?Ab2セルにドロップダウンでA2の選択内容により自動的に内容が変わる
ようにしたいです。

参照の質問のように名前の定義を使えばよいとは思うのですが、実際には項目数が多く(「あ」から「と」まであるイメージ)、B列の内容も変更したり増減したりするため、もっと動的にできないか悩んでいます。
素人考えですが、A列を参照して対象のB列を抽出できるようにすれば…となったところで止まっております。
なにか良い方法をご存知でしたら教えて下さいませ…よろしくお願いします!

< 使用 Excel:Excel2021、使用 OS:Windows11 >


 C1が最初の入力規則設定セルとします。(あ/い/う/え/お から選択)

 次に、どこかの列(例えばG列とし)
 G1 セルに =FILTER(B1:B20,A1:A20=C1) を入力します。

 D1をその下位の入力規則設定セルとします。
 D1の入力規則(リスト)の「元の値」に、
 =G1#
 と設定してみてはどうでしょう。

 # セル範囲等は適宜調整してください。
(xyz) 2025/07/08(火) 20:30:55

 A,B列が可変範囲で頻繁に変わるなら
 G1セルを
 =FILTER(B:.B,A:.A=C1)
 などと "trim参照" を使うとよいかもしれません。

(xyz) 2025/07/08(火) 20:36:13


Excel2021なのでtrim参照は使えないのでは?
可変に対応するならテーブルにすればいいと思います。
(あ) 2025/07/09(水) 00:26:21

 データ数が増減するならまずは構造化参照を覚えるべきです。
 元のデータをテーブル化してから話が始まるかと。

 そしてただ単に元のデータをフィルタリングしたいというだけなら
 テーブル化したデータに「スライサー」を挿入するだけで事足ります。
 見た目もなんだかスタイリッシュになりますしね。

 フィルタリングしたデータを何かの集計に用いたいという話なら
 どういった集計方法をするのか
 使う関数はなんなのか
 などによってご提案できる内容は変わってきます。

(デボラ) 2025/07/09(水) 01:05:25


 trim参照はExcel2021では使えない点、ご指摘のとおりでした。
 うっかりしました。ありがとうございます。

(xyz) 2025/07/09(水) 09:27:40


xyzさま、あさま、デボラさま

早々にご回答を頂いていたのになかなか返信ができずすみません…
また、いろいろ情報が足りていなくてすみませんでした。

具体的に説明しますとsheet2(表シート)に上のデータがあり
sheet1(入力シート)のb2:f1000にテーブルを作成しています。
2行目はタイトルになっているため、実際にドロップダウンを使用するのは3行目からになります。

そのsheet1のテーブル内でb列にドロップダウンを作成してsheet2のa列の文字列を表示し、
     〃     c列に      〃       b列の文字列を表示したいのです。
sheet1のb3に「い」と入力した場合にはc3のドロップダウンには「いA〜いF」のみが表示され
  〃  b4に「え」と   〃    c3の   〃   「えA、えB」のみが表示される
ようなイメージです。

xyzさまのfilter関数を試してみたのですが
理解が間違っているのかスピルで「0」が表示を示すのみでした…
※なお、参考までに
 sheet1のo3セルに「=FILTER(Sheet2!B2:B100,Sheet2!A2:A100=B1)」を入力し
 c列の入力規則に=o3#を入力しています。

勉強が足らず恐縮ですが、教えてくださいませ…
(うるん) 2025/07/13(日) 22:31:24


 >sheet1のo3セルに「=FILTER(Sheet2!B2:B100,Sheet2!A2:A100=B1)」を入力し
 そのときB1には何が入力されているのですか?
 O3以下には候補が出力されているんですか?

(xyz) 2025/07/13(日) 22:56:58


 第一段階の選択結果により、第二段階の選択肢を自動で決めたい。
 ただし、選択のための表は適宜変わるので、動的に設定したい、というのが質問趣旨でした。

 FILTER関数を使った式を入力規則に設定すればよいと考えたくなるが、
 実はそれはできない(そうした動的に結果が変わる関数を用いた指定はできない)。
 それなら、シートに展開して、=G1# などと指定すれば可能は可能です、
 というところまで話は来ています。

 ただ、それだと入力規則を設定するセルの数だけ、選択候補のセル範囲をシート上に作成する必要がある。
 これはこれで手間です。

 これは避けるならマクロということになります。
https://dailyexcelhacks.blog/excel-filter-vba-dropdown/
 などが参考になるでしょう。
(ただし、マクロに慣れていないと最初は戸惑うかもしれません。特にイベントプロシージャは)

 その記事には、そもそもFilter関数って何?というところから説明されているので、
 参考になるでしょう。

 # テーブル機能に詳しくないので、その特別な機能を使って入力規則設定が簡単にできるのかは知りません。
 # テーブルに対して、そもそも「全体として何をされたいのか」を改めて説明されたほうがよいと思います。
 # その目的に沿った提案がされる可能性があります。

(xyz) 2025/07/14(月) 15:31:34


A2セル:
データの入力規則 → リスト → =リスト!A1:A5(「あ〜え」など)

B2セル:
データの入力規則 → リスト →=INDIRECT(A2 & "リスト")

これで、A2で選んだ値に応じて、B2のドロップダウンが動的に変化します!
(通りすがり) 2025/07/14(月) 15:42:53


 >そうした動的に結果が変わる関数を用いた指定はできない
動的に結果が変わる関数ではなく
FILTER関数の戻り値がセル参照ではないからでは?
(はてな) 2025/07/14(月) 15:51:54

 はてなさんご指摘ありがとうございます。
 そうですね。Filter関数についてはその通りですね。

 ただセル参照であればOKかというとそうでもないのですね。それで少し曖昧な書き方になってしまいました。
https://www.excel.studio-kazu.jp/kw/20250627111012.html
 で少し書きましたが、OFFSET関数を使ったある種のものは、
 ISREF関数がTrueを返しますが、入力規則には使えません。
 まあ、こちらがレアケースなのでしょう。 
 メインの流れとしては、セル参照であることが必要だろうという指摘は受け止めます。

 通りすがりさんもご指摘ありがとうごさいます。
 確かにstaticなセル範囲であれば、それでOKなんですが、
 可変ということになると、COUNTAとOFFSETが必要になり、その場合はうまくハンドリングできないのです。
(xyz) 2025/07/14(月) 16:58:03

 ●表 シート

   A  B 
 1 あ あA 
 2 あ あB 
 3 あ あC 
 4 あ あD 
 5 あ あE 
 6 あ あF 
 7 あ あG 
 8 あ あH 
 9 い いA 
10 い いB 
11 い いC 
12 い いD 
13 い いE 
14 い いF 
15 う うA 
16 う うB 
17 う うC 

 ●入力 シート

  A  B C  D 
1       あ 
2 う うC   い 
3 あ あF   う 
4       え 

 D1
=UNIQUE(TAKE(表!A:A,COUNTA(表!A:A)))

 A2
入力規則:リスト▼:元の値:
=$D$1#

 B2
入力規則:リスト▼:元の値:
=OFFSET(XLOOKUP(A2,表!$A:$A,表!$B:$B),,,COUNTIF(表!$A:$A,A2))

 A2:B2を選択して下方向・↓コピー

(んなっと) 2025/07/14(月) 19:20:06


>xyzさま
早速コメント頂きありがとうございます。
 そのときB1には何が入力されているのですか?
 →スピルの内容と同じく「0」が表示されます
 O3以下には候補が出力されているんですか?
 →スピルですので「0」が連続で表示されています

 ※と、ここまで書いて初歩的なミスに気が付きました。
  …Sheet2!A2:A100=B1
  としていましたが、テーブルはB3からだったので0表示になるのは当たり前でした…
  =B3
  に修正したところ、B3が「あ」のときには「あA〜あH」が表示されるようになりました。

頂いたURLの内容がやりたいことと一致しているため、大変助かります!
頑張って解読してみます!

>通りすがりさま
コメントありがとうございます!
私の理解が悪いのか、同じように設定してみましたがB2のドロップダウンが出てきませんでした…
名前の定義は使用されないのですよね…?

>んなっとさま
コメントありがとうございます!
d1セルの式で躓いてしまいました…どうやらexcel2021ではtake関数が使用できないようです。

みなさま、大変ありがとうございましたm(_ _)m
(うるん) 2025/07/15(火) 13:01:52


 んなっとさんの方法を使われることを推奨します。
 ワークシート関数の範囲での対応方法が提案されたのですから、そちらのほうがよいと思います。
 A列の第一選択肢は通常の入力規則で十分対応できるはずです。

(xyz) 2025/07/16(水) 11:31:42


 TAKE関数使えないのですね。申し訳ありませんでした。

 D1
=UNIQUE(FILTER(表!A1:A1000,表!A1:A1000<>""))
(んなっと) 2025/07/16(水) 15:42:55

解決した?
(透) 2025/07/19(土) 22:22:25

>透さま
お気遣いありがとうございます!なかなか時間がとれず返信が遅れてすみません…
xyz さまのアドバイスをもとに、スキマ時間を見つけては んなっと さまのご提案と格闘しておりました。
自分の理解の悪さが邪魔して時間がかかってしまいましたが
無事、やりたいことを再現することができました!

みなさま、大変ありがとうございました!
また何かありましたらよろしくお願いします!
(うるん) 2025/07/24(木) 09:28:13


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.