いきなり答える備忘録

Google Workspace(旧G Suite)・Microsoft 365・LibreOfficeなどに関するメモ

(Gスプレッドシート)初出順にソートする

 Googleスプレッドシートで、表の中で最初に出現する順に値をソートする方法についてです。
 実用性は薄いですが参考まで。

  • SORT関数とUNIQUE関数等を併用することで初出順のソートができます。

手順

 まずは結果です。
 ソートの対象となっているのはB3:C12の範囲です。
 B列の値(店舗名)に注目し、最初に出現する順番が早い(上の方に値が存在する)ものほど上に並ぶようにソートしています(E3:F12の範囲)。

 これは関数を使って実現しており、式の内容は次のとおりとなっております。

 E3セル

=SORT(B3:C12,XMATCH(B3:B12,UNIQUE(B3:B12)),TRUE)

 SORT関数を使っています。第2引数として「XMATCH(B3:B12,UNIQUE(B3:B12))」を指定し、これをキーとして昇順で並べています。
 このうち「UNIQUE(B3:B12)」では店舗名の初出順リスト、つまり「{"神田店";"秋葉原店";"品川店";"池袋店"}」を取得しています。
 さらにXMATCH関数を使い、B3:B12のそれぞれの値が初出順リストの何番目に位置しているかを取得しています。この結果を基準にしてソートすれば初出順でソートされるというわけです。
 XMATCH関数をARRAYFORMULA関数で囲む必要があるようにも思えますが、なくても大丈夫です。


 なお、上記の式の第2引数の部分だけ実行した結果はこのとおりです(ただしARRAYFORMULAを追加しています)。
 店舗名の初出順である1から4の値を取得しているのがわかります。