teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

説明を追記

2020/07/15 01:43

投稿

sawa
sawa

スコア3002

answer CHANGED
@@ -1,3 +1,31 @@
1
1
  スプレッドシートはExcelと違ってプルダウンリストの指定に関数が使えません。固定した範囲を指定するしかないです。これはちょっと残念なところです。
2
2
 
3
- ただ、スプレッドシートには元々Excelでいうところのスピル機能の関数が備わっているので、もし連動するような可変のプルダウンを作りたい場合は、プルダウンリストとして指定した範囲の中身を可変にすることで実現できます。(Filter関数などを使う)
3
+ ただ、スプレッドシートには元々Excelでいうところのスピル機能の関数が備わっているので、もし連動するような可変のプルダウンを作りたい場合は、プルダウンリストとして指定した範囲の中身を可変にすることで実現できます。(Filter関数などを使う)
4
+
5
+ <追記>
6
+ 「解決済」にはなってるけど、実はまだ解決してないとのことで補足説明を。
7
+ まず私の回答およびコメントで、「関数を使うことで Excelのindirect等を使ったプルダウン連動と同じようなことがスプレッドシートでも出来る」と記載しましたが、これはちょっと説明不足でした。
8
+ 「出来るけど 非常に面倒」です。
9
+ 理由としては、連動プルダウンの入力箇所が複数ある場合は、その一つ一つに対して リストの範囲を指定してあげる必要があるからです。しかもプルダウンリストの範囲は固定なのでコピペやオートフィルが通じません。まさに一つ一つ設定する必要があります。
10
+
11
+ ■参考サイト
12
+ [https://aimstogeek.hatenablog.com/entry/2019/02/01/170222](https://aimstogeek.hatenablog.com/entry/2019/02/01/170222)
13
+
14
+
15
+ これは量が多い場合は、あまりに現実的でないので、回避策として以下の2つの方法を記載しておきます。
16
+
17
+ **1. 関数でFilter等に使う検索キーを可変とする**
18
+  C列が第1プルダウン、D列が第2プルダウンとすると以下のような関数で取得するC列のキーワードで
19
+  FilterやVLOOKUP,、Queryをかける感じです。
20
+ ```
21
+ =INDIRECT("C"&MIN(ARRAYFORMULA(IF((C:C<>"")*(D:D=""),ROW(C:C),))))
22
+ ```
23
+  これは、第1プルダウンが選択されていて、第2プルダウンが空欄で一番上の行の第1プルダウンの値をキーワードとして取得しています。これによって、1箇所固定で連動プルダウンとしています。
24
+ ただし、気にしなければいいはなしですが選択後のプルダウンではエラー表示が出ますし、上から順に選択していかないと 選択肢が連動してないというケースも出る為、運用に依存しがちだったりで、自分のみや身近な人が使うレベルにとどめておいた方がいいやり方です。
25
+
26
+ **2. on Editで Google Apps Scriptからプルダウンをセットする **
27
+  こっちの方がスマートですが、スクリプトを触ったことのない人にはハードルが上がるので、そこが悩ましいところです。
28
+
29
+ とりあえず、この質問への回答は以上といたします。
30
+
31
+ 連動プルダウンに関しては、現状ではGoogleスプレッドシートは、Excelほど気軽には設定できないとお考え下さい。(私も色々苦労したのを思い出しました)