いきなり答える備忘録

Google Workspace・Microsoft 365・LibreOfficeなどに関するメモ

(Gスプレッドシート)データの抽出条件・並べ替えの設定に列番号を用いる

 Googleスプレッドシートで、リストからのデータの抽出や並べ替えを行う際に、抽出する列、抽出条件の対象とする列、並べ替えの基準とする列を指定する必要があります。これらの列を列番号で指定する方法についてです。

  • QUERY関数を使うことで、抽出や並べ替えの対象とする列をリスト固有の列番号(Col1,Col2……)で指定することができます。
  • 「Col」の部分を「COL」「col」などとするとエラーになります。

手順

f:id:accs2014:20190707122644p:plain:right:w350

 B2:C5の範囲に値が表示されています。
 これはB2セルに次のように記しているため、値がリスト状に表示されているものです。

={1,"春";2,"夏";3,"秋";4,"冬"}

 一旦このようにセル上に値を表示させれば、あとはFILTER関数やSORT関数で抽出や並べ替えを行うことができます。
 そこでですが、セル上に表示させる前に、このリストに対して直接抽出や並べ替えを行うにはどうしたらいいでしょうか。B列とかC列といった列の指定ができないのでうまくいかないようにも思えますが……
 
 
 適当と考えられるのはQUERY関数を用いる方法です。
 具体例として「2列目だけを抽出するものとし、抽出条件は『1列目の値が3でないこと』とする。並べ替えは1列目の降順による。」とする場合、B2セルに次のように記します。

=QUERY({1,"春";2,"夏";3,"秋";4,"冬"},"SELECT Col2 WHERE Col1<>3 ORDER BY Col1 DESC")

 QUERY関数特有のクエリ言語(SELECT以下)で列番号(Col1,Col2)を用いて抽出対象とする列、抽出条件に用いる列、並べ替えの基準となる列を指定しています。
 「Col」はCが大文字でoとlが小文字です。これを間違えるとエラーになりますので注意してください。
 

f:id:accs2014:20190707122647p:plain:right:w600

 画像は実行結果です。
 この方法により、関数や計算で大きなリストを生成してその結果に対して抽出や並べ替えを行うような場合に、途中の結果を一旦どこかに表示させる必要がなくなります。

 ちなみにSORT関数でも並べ替えの基準とする列を指定する際に列番号(1,2,3……)を用いることはできますが、複数の列を設定することができません。QUERY関数では可能です。