
kabuさん、元のデータから「重複なし、空白なし、ソート済み」のリストを作ることって出来ますか?
例えばA列の会社名を「重複なし、空白なし、ソート済み」のリストにして、さらにA列自体はそのリストからドロップダウンリスト(プルダウン)になっていて、会社名が追加されるごとにリストも更新される、みたいな!
伝わりますかね?!

あ〜はい
・A列から「重複なし、空白なし、ソート済み」のリストを作る
・上のリストをA列にドロップダウンリスト(プルダウン)として反映する
A列の項目が増減すれば、このリスト自体も更新されるってイメージです。

じゃあ今回は
① 参照元からソート済み、空白無し、重複無しのリストの作り方
② 範囲指定でのドロップダウンリスト作成方法
ついでにですね、以下についても解説していきたいと思います。
③ 作成した数式を名前付き関数に登録する
④ 名前付き関数を動かしてみる
⑤ 数式に使用した関数の説明
ってことで話していきましょう〜
ソート済み、空白無し、重複無しのリストの作り方

このスクリーンショットでは、A〜C列にまたがるリストがマスターデータとしてあります。
このうちのB列の項目を「ソートして、空白無しで、重複無し」のリストをE列に作成したいと思います。

=SORT(UNIQUE(FILTER(B3:B,B3:B<>"")),1,TRUE)

E3セルに書いた数式はこんな感じ


結果として、こういうリストが出力されます。

重複している会社名も空白もしっかり消えてますね!

「UNIQUE」関数だけでも重複のないリストは作れますが、参照範囲の中でただの空白ではなく、関数などで「””」が返されているセルがあるとこれも拾ってしまいます(B6セル)。

この数式について詳しくはこちらで解説しますが、上の理由で「FILTER」関数をかませています。
範囲指定でのドロップダウンリスト作成方法

このリストの内容がB列のドロップダウンリストとして選べるようにできるのが理想なんですけど・・・

では、B列にドロップダウンリストを設定していきます。
B列の該当セルを選択して

上部メニュー > 「挿入」 > 「プルダウン」 を選択します。

画面右端にプルダウンのメニューが表示されます。

適用範囲のおしり(この場合「B3:B22」となっている)部分を「B3:B」に変更します。

条件 の「プルダウン」をクリックして「プルダウン(範囲内)」に変更します。

「データ範囲を選択」をクリックします。

ポップアップが表示されるので、該当セル範囲(今回作成したドロップダウンリスト(プルダウン)用数式の列範囲)を選択して「OK」を押します。

メニューを下にスクロールすると「詳細オプション」を設定できます。

データが無効の場合:「警告を表示」
表示スタイル:「矢印」
に変更して「完了」を押します。

試しにデータの一番下に新しい会社名を追記してみてください。
E列のリストの方にも追加されたかと思います。
また、B列のドロップダウンリストにも新しく追加した会社名が選択候補として追加されているはずです。

そうそう!
これがやりたかったんですよ!

お、当たりましたか。
よかったです。
作成した数式を名前付き関数に登録する

あのう・・・
なんで「名前付き関数」に登録するんでしょうか??

この「重複無し、空白無し、ソート済み」にする数式・ドロップダウンリスト(プルダウン)用リストに整形する数式って色々なケースで使われると思います。
例えば、顧客管理や進捗確認、支払い状況管理だったり家計簿なんかでも、取引先や購入先をユニーク(重複なし)でリストアップするケースですね。
この数式を「名前付き関数」に登録しておけば、スプレッドシートをまたいでも同様の関数を使うことができるからです。
「名前付き関数」についての詳しい説明は以下の記事でも紹介していますので興味があれば見てみてください。
名前付き関数の設定値
名前付き関数は、スプレッドシートの
上部メニュー > 「データ」 > 「名前付き関数」 と進むと画面の右にメニューが表示されます。

関数名 | LIST |
関数の説明 | 列範囲内の項目を重複無しでリストアップし、指定順にソートをかけます。 |
引数 | 範囲, 昇順 |
数式の定義 | SORT(UNIQUE(FILTER(範囲,範囲<>””)),1,昇順) |

引数の説明 | リストを作成する列範囲を指定します。 |
引数の例 | B3:B |
引数の説明 | 昇順で並び替える場合は「TRUE」を降順で並び替える場合は「FALSE」を指定します。 |
引数の例 | TRUE |
値を入れ終わったら「作成」を押します。
(スクリーンショットは「更新」になっていますが気にしないでください。)
名前付き関数を動かしてみる

作成した名前付き関数を動かしてみましょう。


今回作成した関数なので「=LIST…」と入力して、と・・・
関数の候補として先ほど作成した関数が出ました!!


範囲には「B3:B」を指定します。


この場合は「TRUE」で良いってことですかね??

そうっす。
昇順は「TRUE」、降順は「FALSE」です。
ちなみに、昇順とは小さい順、降順とは大きい順ですね。

・・・わかってますよっ!


「)」をしてEnterキーを押せば、先ほどの数式と同じ結果が表示されます。
//通常の数式
=SORT(UNIQUE(FILTER(B3:B,B3:B<>"")),1,TRUE)
//登録した「名前付き関数」
=LIST(B3:B,TRUE)

うん。
多少ではありますが、数式が短くなるのはいつ見ても気持ちが良いですよね!

・・・そうですね ♪

重複無し空白無しソート済みリストを作成する数式と今回使用した関数の説明
重複無し空白無しソート済みリストを作成する数式の概要

今回の数式は次の通りでしたね。
=SORT(UNIQUE(FILTER(B3:B,B3:B<>"")),1,TRUE)
一番内側の「FILTER」関数から見てみます。
FILTER(B3:B,B3:B<>"")
「B3:B」(会社名)を対象範囲にして、同じくその範囲の「“”」じゃないものを出力しています。

今回の場合は、B6みたいな「会社名が入っていないセル」は除外されるってことです。
UNIQUE("ABC株式会社","株式会社CHAKAMAKASHI","(有)いまい","どど土井建設 株式会社"...)
UNIQUE関数では、重複項目が整頓されます。
B列には同じ会社名が複数回にわたって入っていましたが、それが一つずつに整理されるわけです。
=SORT( 値 , 並び替えの基準にする列 ,TRUE=昇順 FALSE=降順)
一番外側のSORT関数では値を「昇順」か「降順」かを並び替えることができます。
「値」は複数列にまたがって指定することもできます。
なので、複数列が指定されていたら「どの列で並び替えるか」指定しなければなりません。
=SORT("ABC株式会社","株式会社CHAKAMAKASHI","(有)いまい"...,1,TRUE)
今回の場合は、そもそも1列しか範囲指定していないので「1」列目を指定しています。
最後に昇順か降順の指定をして完成です。
使用した関数の説明

えー今回は、以下の関数を使用しています。
Aiによる関数の説明は以下の通りです。
SORT
SORT
関数は、指定した範囲または配列のデータを昇順や降順に並べ替えます。複数の列を基準にソートすることも可能で、データの整理や分析時に非常に便利です。
SORT(範囲, ソートする列番号, 昇順か降順か, [追加の列番号, 昇順か降順か, ...])
例えば、ある列を基準にデータを昇順(小さいものから大きいものへ)に並べ替えたい場合に使います。
2. UNIQUE
UNIQUE
関数は、指定した範囲または配列から重複する値を除外してユニーク(一意)な値のみを抽出します。データの重複を排除して一覧を作成する際に特に有用です。
UNIQUE(範囲)
例えば、名簿から重複する名前を取り除き、一意の名前のリストを作成したい場合に便利です。
3. FILTER
FILTER
関数は、指定した条件に基づいて範囲または配列からデータをフィルタリングします。条件に合致するデータのみを抽出して表示するため、特定の基準を満たす項目を見つけたい時に役立ちます。
FILTER(範囲, 条件式)
例えば、特定の条件を満たす行のみを抽出したい場合などに使います。
これらの関数を組み合わせることで、スプレッドシート上でのデータ管理が非常に効率的になります。データを整理し、重要な情報を素早く見つけ出すことが可能になります。
まとめ

今回は
① 参照元からソート済み、空白無し、重複無しのリストの作り方
② 範囲指定でのドロップダウンリスト作成方法
・・・ついでに
③ 作成した数式を名前付き関数に登録する
④ 名前付き関数を動かしてみる
⑤ 数式に使用した関数の説明
ってことで話しました。

ドロップダウンリストの設定方法について、より実用的なことだったので知れてよかったです ♪

ちなみに、今回使用した3つの関数は共に範囲を出力する関数なので、
「ARRAYFORMULA」関数との併用は出来ませんのであしからず。

?
はい。そうなんですね!
コメント