スプレッドシートで何かしらまとめたりしているとQUERYを使うことが多くなる
デフォルトだとヘッダ行も出力されるので、それだと使いづらいケースがある
それをなくして使いやすくする
結論
LABEL ${列の名前} ''
をQUERYの最後につける
例
まず普通に使った場合
こんな感じのデータがあったときに
I2
のクエリの中身
=QUERY(A2:C5,"SELECT SUM(B)")
K2
のクエリの中身
=QUERY(A1:C5,"SELECT SUM(B)")
データ範囲にヘッダ行を入れる入れないで多少出力がかわるが列名が表示され、QUERYの結果のデータが出力される
ヘッダ行を表示させない
データは先述と同じで少し条件を加え
name
ごとのprice
の合計を出したいパターンで考える
例ではE列の値を検索の条件に含めてSUMした結果を表示させている
スクリーンショットのようにF2
はE2
の値をもとに計算した数値、F3
はE3
の値をもとに計算した数値を出力させることができる
F2
のクエリの中身
=QUERY(A1:C5,"SELECT SUM(B) WHERE A = '"&E2&"' LABEL SUM(B) ''")
F3
のクエリの中身
=QUERY(A1:C5,"SELECT SUM(B) WHERE A = '"&E3&"' LABEL SUM(B) ''")
LABEL SUM(B) ''
LABELはSQLで言うASのような役割
この部分でLABELに出力する文字列を指定している、空文字だとそもそも表示されずデータから表示される
F2
とF3
では条件のセルの行数が違うだけ
おわり
例だとあまりメリットなくてGROUP BYで良いのでは? って感じになるが各行でVLookupより複雑なことをしたい場合(動的にクエリに条件入れたい)にこの使い方が活きる
まぁきれいかどうかは置いておくとして、詰まったときの選択肢としてあるとはかどる