かもメモ

自分の落ちた落とし穴に何度も落ちる人のメモ帳

Google SpreadSheet QUERY で BY 列を取得しようとするとエラーになる問題

列数が多いシートから QUERY で必要な列を取ってきて整形するケースなど多いと思います。 あまりにも列が多いシートで BY 列を取得しようとすると、そのままではエラーになってしまいます

=QUERY(data!A1:BZ, "SELECT BY WHERE A is not null", true)

👉️ #VALUE!

BY は ORDER BYGROUP BY で使うキーワード (予約語) なのでエラーになる

関数 QUERY のパラメータ 2 のクエリ文字列を解析できません。PARSE_ERROR: Encountered " "by" "BY "" at line 1, column 8. Was expecting one of: "true" ... "false" ...

解決方法: BY を バッククォート (`) で囲えば OK

SELECT に続く列名「BY」をバッククォートで囲えばエラーにならず BY 列の値が取得できる

=QUERY(data!A1:BZ, "SELECT `BY` WHERE A is not null", true)

⚠️ シングルクォートだと意図した通りの動作にならないので必ずバッククォートで `BY` とすること


参考