【邪道】スプレッドシートのドロップダウンリストを神がかった使いやすさにする方法

2020年5月18日月曜日

スプレッドシートTIPS スプレッドシート系記事

ドロップダウンリスト



 本投稿ではスプレッドシートの機能を使ってドロップダウンリストを作ります。
 まずはどのようなものなのかを見ていただきましょう。

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


環境


 使用したスプレッドシート → ドロップダウンリスト

シート構成


 シート1 ラッシュデュエルデータ
 シート2 関数
 シート3 販売


データシート


関数シート


販売シート


このドロップダウンリストについて


要点


 1 販売シートのA列にドロップダウンリストを設定しています。
 2 販売シートA列のセルに文字を入れて決定すると、ラッシュデュエルデータシートのカード名(A列)を曖昧検索した結果をリスト化します。
 3 ドロップダウンリストは関数シートを範囲指定しています。

注意事項


 1 途中に空白行があるとうまく機能しません。
 2 販売シートに2000行以上データがあると計算スピードが実用レベルに耐えられなくなります。( VLOOKUPの計算が追いつかなくなります。ドロップダウンリストとは関係ありませんが……)

解説


 まず、このドロップダウンリストを邪道としたのには理由があります。

 1 常に警告が表示されてしまう
 2 曖昧検索するために一度入力文字を決定し、再度入力セルを選択しなければならない。

 この二つの条件をクリアできなかったため、このドロップダウンリストは邪道と銘打ちました。

ラッシュデュエルデータシート


 このシートに数式は含まれておりません。
 純粋なデータシートとなります。

関数シート


 このドロップダウンリストの肝はこの関数シートにあります。

 関数シートのA1セルに入力してある数式
  =IFERROR(UNIQUE(FILTER('ラッシュデュエルデータ'!A:A,SEARCH(INDEX('販売'!A:A, COUNTA('販売'!A:A)),'ラッシュデュエルデータ'!A:A))),"")
 
 上記関数のざっくりした動作イメージはこんな感じです。

関数動作フロー

例えば、こんな感じになります。

関数シート動作

スプレッドシートは配列が含まれた結果を入力したセル以外にもはみ出して結果を出力する機能が備わっているので、A1セルにしか数式が書かれていなくても、A2セル以降にも出力されます。(エクセルにも互換機能としてスピルという新しい機能があります)

販売シート


 このシートのA列にはデータの入力規制機能を使ってリスト入力範囲を指定しています。

 指定範囲
  '関数'!A:A

 指定方法

ドロップダウンリスト設定方法


最後に


 【邪道】スプレッドシートのドロップダウンリストを神がかった使いやすさにする方法はいかがでしたでしょうか?
 この投稿はスプレッドシートのドロップダウンリストの解説を探してもあまりいいものがなかったので自分で考えてみようとしたのがきっかけでした。

 スプレッドシートのドロップダウンリストには、エクセルのように数式を埋め込むことができないのでこんな風にしか解決策がありませんでした。
 今回は入力したセルの値を使ってフィルターをかけましたが、違うセルを使うこともできます。しかし、本当はアクティブセル( 選択中のセル)をフィルターにかけてリスト化したいですね。
 しかし、そのためには現状GAS(エクセルのVBAのようなもの)を使ってコーディングをしなければ難しいようです。

 まあ、気長にスプレッドシートのバージョンアップを期待しましょう!


QooQ