【QUERY関数】基本の使い方を徹底解説

query_kv おすすめ関数
おすすめ関数
この記事は約5分で読めます。
スポンサーリンク

今回はスプレッドシート関数であるQUERY関数を用いた集計・データ抽出の効率化方法をご紹介します。

特にデータ抽出・転記作業を効率化する上で非常に使い勝手がいい関数なので、使い方を抑えて業務効率化を図りましょう。

手動で作業をする手間と無駄

分析系の業務を行なってる方は特に、データから特定の条件に合致したもののみを抽出・リストアップしたいという場面は意外と多いのではないでしょうか。

これまで広告運用業務・分析業務の運用改善・業務フロー整備を行う中で「この作業不毛よな」って思う場面にたくさん出くわしてきました。

そして僕はそういった不毛感・めんどくさいことが大嫌いなので、どうにかならないかなぁって思っていたところに出くわしたのが今回ご紹介するQUERY関数なんです。

もちろんツールを導入してもいいですが、ツールを導入するほどのことでもないケースってたくさんあると思うんですよね。そういうケースにクイックに効率化できる手段としてとても汎用性の高いツールがQUERY関数です。

ちなみに、個人的に可能な限り作業は自動化・効率化すべきと思っているんですが、その理由は2つあります。

  1. 人が介在する以上ヒューマンエラーは起こりうる
  2. やらなくてもいい作業を人がやるのは精神衛生的に良くない

まず人が介在する以上、ミスが起こる可能性を0にすることは難しいですが、自動化・効率化すればあとは勝手に連携してくれるので、構築した仕組み自体のチェックを1回してしまえば、ミスが起こることはありません。

加えて、QUERY関数のような関数1つで効率化・自動化できることを人がやったところで、正確さ・速さともに人に勝ち目はありませんし、そういった作業をずっとし続けるのは精神衛生上良くないですよね。

今回はそういった作業を人力でやっている方向けに、ミニマムでできる自動化・効率化の方法としてQUERY関数の使い方をご紹介します。

QUERY関数とは

QUERY関数とは、特定のデータ群から指定した条件でデータを抽出する関数です。
基本的な構文はこのような書き方になります。

=QUERY(データ,クエリ,[見出し])

簡単に説明するとこのような定義になっています。
<データ>
どこからデータを抽出するのか、という元データの範囲。
<クエリ>
データベースに対する問い合わせのこと。「こういったデータをとってきて!」という命令文だと思ってください。
「”select 抽出する列 where 条件”」が基本構文になりますが、「データ」で指定した範囲全ての列を取得する場合は「select 列」部分は省略可能です。
<見出し>
こちらは省略可能ですが、データの上にある見出し行の数です。

このQUERY関数を使うと、元データの情報更新も反映してくれるのでいちいち修正箇所を確認して再度反映するといった無駄な作業もなくなります

ちなみにQUERY関数を用いた集計・データ抽出方法について、いくつかの記事でご紹介してるのでしてるので併せてご覧ください。

QUERY関数で集計を自動化する方法

では実際にQUERY関数を使った集計の自動化方法についてご紹介します。

どんなアウトプットにしたいかを考える

まずはどういうアウトプットにしたいのかを考えましょう。
集計や効率化は最終的にどういう業務フローに落とし込みたいかによって作り方が変わります。事前にしっかりと運用をイメージしておきましょう。

今回は、以下のような顧客データから業界別・顧客情報獲得月別にデータを抽出する方法を例にしてみます。

query1

この時の注意点としては、関数で集計するデータとベタ打ちするデータが混在する場合は、可能な限り元データ(データベース)側で対応するようにしましょう。

理由は2つあって、まず集計する都度関数を読み込むと重くなるため。もう1つは、関数で集計するデータに対してベタ打ちしているデータが対応しなくなる可能性があるためです。同じ行に入れていたデータがソートかけた途端崩れるケースは多いので注意しましょう。

集計表を作る

まずは、上記で想定している集計方法(業界別・顧客情報獲得月別)で集計できるような集計表を作成します。今回はそのまま引っ張ってくるだけなので同じフォーマットを利用します。

query2

QUERY関数を使って抽出してみる

ではいよいよQUERY関数を用いてデータを抽出していきます。
まずはステップ1として、指定したい文言をベタ打ちで関数の中に入れてみます。

なお今回は全てのデータ(列)をそのまま取得しているので、列指定をするselect句は使用していません。

=query(DB!B3:G6,”where F=’製造'”)

<補足>
・データテーブルのあるシート「DB」のB3~G6セルをデータベースとして指定
・F列が「製造」である行を取得する

query3

whereから始まるクエリはダブルクォーテーションで囲われているため、その中で文字列を指定する場合はシングルクォーテーションを使用する必要があります。ここでダブルクォーテーションを使用してしまうとエラーするのでご注意ください。

構文を少し整える

さて、いったんは基本的な書き方ができましたが、これだとややスマートさにかけるのでもうひと工夫しておしまいにしましょう。

文字列指定で取得していた「業界」ですが、ここを指定したセルの値を取得する形にしましょう。こうすることで、関数内をいじらずとも指定したセルの値を変えるだけで集計対象を変更することが可能です。
(関数内をいじってもいいのですが、ミスが起こりそうな箇所は触らないようにするのが理想です)

=query(DB!B3:G6,“where F='”&J3&“‘”)

query4

さらに欲を言うと、データベースとして取得していた範囲も「B3:G6」から「B3:G」という形で、
データベースの行数が増えても問題なく取得できるようにしておけるとベストですね。

ちなみに、日付情報を参照するケースだと、テキストの書式によって一致せずエラーするケースがあるので、その場合は書式をご確認ください。

まとめ

いかがでしたでしょうか。
今回は、QUERY関数を使ってデータを抽出する方法をご紹介しました。

QUERY関数は使い方によって非常に便利なツールになりますが、今回はその初歩中の初歩をまとめてみました。もう少し発展的な内容もまとめますのでぜひご覧ください。

タイトルとURLをコピーしました