こんにちは。当サイトへお越しいただきありがとうございます。本記事では、Googleスプレッドシートのquery関数について解説いたします。
このquery関数の動作は、エクセルでは実現できない(2023年1月現在)動きなので、スプレッドシートの優位性の一つですね。
query関数でできること
query関数でできることは簡単に言うと、「SQLが書ける」と言う事になります。
SQLが書けることに加えて、他のシートから引っ張ってきたりなどすれば、条件で抽出しつつ、表の結合なんかもできます。大変便利です。
つまり、作業者が限られたシートに入力し、裏側でquery関数を使ってデータ抽出を行い、その結果を同じスプレッドシート内にデータマートとして作成する。これを使いたいようにアレンジすることで、sぷレッドシート内で完結するRPA(業務自動化)ができます。さらに個人的な推しどころは、マクロなどの言語でない点です。非エンジニアの方は、プログラミング言語と言うだけで拒否反応があると思いますが、普段使っているエクセルの延長線上である「関数」であれば、非エンジニアの方も拒否反応が薄れ、多少はメンテナンス性が上がります。
さて、話が逸れてしまいましたが、query関数にできることは、「SQLが書ける」ということでした。
関数の使い方
基本的な使い方
=query('シート名'!A1:Z100, "SELECT A, B, C, E WHERE D='条件jouken'")
一般的なSQLであればFROM句が存在しますが、関数の第一引数で範囲を指定しているので、その必要がないと言う事でしょう。
WHERE句の条件が文字列の場合は、外側と内側で「””」「”」を分けないといけません。注意点ですね。
別シートに跨ってデータを引用する場合
=query({'シート1'A1:Z100;'シート2'A1:Z100;'シート3'A1:Z100}, "SELECT * WHERE Col1 is NOT NULL")
上記のように、「{}」で複数の範囲を入れます。それぞれの範囲を「;」で繋いでいきます。そうすることで、縦結合された形で、データを繋げることができます。繋げたものを、SQLで抽出すると言う感じです。
また、列名の表現ですが、一例目は「D」というスプレッドシート上の列名です。「Col1」は範囲の1番目の列です。このような使い分けがありますのでご注意ください。
さらに注意しなければいけない点としては、「列数の一致」です。一致しなければエラーになります。SQLを使い慣れている人であればある程度想定の範囲内のエラーかと思いますが、使い慣れないうちは、ご注意ください。
まとめ
以上が簡単な使い方です。
さらに詳しく使用方法などを知りたい方は、いつも参照しているサイトを貼っておきますので、ご参照ください。非常に勉強になります。
スプレッドシートでわざわざ実現する必要があるの?と思うかもしれませんが、どうしてもレガシーな環境でやらなければいけないこともあります。また、データベースを導入するにはあまりにもコスパの悪い環境もあります。実際に私にも経験がありますので、よく分かります…。
参照サイト
連載でいっぱい詳しく解説してくれています。
https://tonari-it.com/spreadsheet-what-is-query/
https://tonari-it.com/spreadsheet-query-select/
上記のリンクから飛べば、このサイトよりかなり詳しく解説してくれていますので、ぜひご参考まで!
公式ドキュメント
https://support.google.com/docs/answer/3093343?hl=ja
コメント