• ベストアンサー

スプレッドシートのプルダウンリスト

Googleスプレッドシートで、プルダウンリストを作成する際、同じ列内で同じ選択肢を使用できないようにしたいです。 例えば、リストに、りんご,ぶどう,みかん,バナナとあり、 一度りんごを選択して入れば、次のリストには、ぶどう,みかん,バナナのみが表示される、といった内容です。

質問者が選んだベストアンサー

  • ベストアンサー
  • mt2015
  • ベストアンサー率49% (258/524)
回答No.2

Excel添付図を参照してください。 E1:E5に元リストが入っているとします。 A1:C1にプルダウンリストで入力するとします。 (1).F2に↓の式を入れ、F5までコピーします。  =IF(COUNTIF($A$1:$C$1,E2),"",E2) (2).A1:C1のデータの入力規則の条件にF2:F5を設定します。 これで出来上がりですが、一度選択したセル(A1:C1)を触ると無効な値が入っているとして警告されます。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

Googleでもエクセルでも、質問のままの設定はないだろう。 ーー そこで、エクセルVBAでやってみた。 Sheet1のF列(どこの列でもよいが、セルの削除でデータの位置が崩れるので、他にこのF列を使わないこと)に a b c d e f g h i j とアイテムを入れておく。 ーー Sheet1のA列の入力規則でA1:A10を、データーデータの入力規則ーリストー =$F$1:$f$10ーOK Sheet1のChangeイベントに Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Range("A1:A10"), Target) Is Nothing Then MsgBox "A列データ" Application.EnableEvents = False x = Target r = Range("F1:F10").Find(x).Row MsgBox "F列の" & r & "行にあり" Range("F" & r).Delete Application.EnableEvents = True End If End Sub を入れる。確認用なので、テストが終わればMsgbox行は削除のこと。 これでA列の入力規則を使うと、だんだんと、今まで使ったアイテムはリストに出なくなっていくだろう。 もしトラブったら標準モジュールに下記を作って実行する。 Sub test01() Application.EnableEvents = True End Sub 質問者の発想の通りをVBAにしたが、際物(キワモノ)のような気がする。 ーー Gogleスプレッドソートの、Google Apps Scriptプログラミングではどうなるか、勉強するのもたいへんだ。お勧めしない。 ーー その他に (1)COUNTIFで2件目以降に、入力規則のしくみで、同じ値が選択されたらエラーにする。 (2)アイテムの値を数字化して、ダブらないようにセルに数字で入力しておいて、入力完了後別列に、VLOOKUP関数で元のアイテムに戻す。 数字の方がダブりのチェックがしやすいと思うから。 などの方法を、使ってはどうか。

  • skydaddy
  • ベストアンサー率51% (388/749)
回答No.1

B1: =if(countif(A1:A4,"りんご")=0,りんご,"") B2: =if(countif(A1:A4,"ぶどう")=0,ぶどう,"") B3: =if(countif(A1:A4,"みかん")=0,みかん,"") B4: =if(countif(A1:A4,"バナナ")=0,バナナ,"") B1~B4に上記の式を入れ、A1~A4を選択するリストを設定すると、選ばれた選択肢がB列のセルに表示されなくなるのでリストから消えます。