【QUERY関数】select句で抽出する列を指定する方法

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

今回はスプレッドシートのQUERY関数について、前回ご紹介した基本の使い方を踏まえて、集計・データ抽出の効率化方法をご紹介します。

前回の基礎編に続き今回は応用編と題して少し難易度の高い設定にチャレンジします。
面倒な作業は可能な限り効率的に、楽に終わらせましょう。

復習

QUERY関数

まずは簡単におさらいです。QUERY関数とは「特定のデータ群から指定した条件でデータを抽出する関数」でしたね。
<基本的な構文>

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

<データ>
どこからデータを抽出するのか、という元データの範囲。

<クエリ>
データベースに対する問い合わせのこと。「こういったデータをとってきて!」という命令文。
「”select 抽出する列 where 条件”」が基本構文。「データ」で指定した範囲全ての列を取得する場合は「select 列」部分は省略可能。

<見出し>
こちらは省略可能。データの上にある見出し行の数。

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

今回はその応用編として「select句で抽出する列を指定する方法」についてご紹介します。

select句とは

select句とは、QUERY関数の引数の中で、「クエリ」に該当する部分で使用する「この列のデータを取得して!」という感じで取得する列を指定するための指示句です。クエリの中では、その上でwhere句を使って「こういう条件の」を指定する訳ですね。

なぜselect句を使うのか

基本の使い方を解説した記事ではselect句を使わずに解説しましたが、それは範囲指定したデータの全てを取得するような抽出の仕方をしていたからです。

例えば、「指定した範囲の中から特定の列だけを抽出したい」「抽出した先の表で、元の表とは異なる順番で列を抽出したい」といった要望があった場合に使えるのがselect句になります。

どういうことか、具体的にselect句を使用して抽出する列を指定する方法を見ていきましょう。

select句の使い方

select句で抽出する列を指定する方法

まずはこちらの記事でご紹介したデータを用いて、select句を利用する方法を解説します。最終的に用いた関数がこちらでしたね。これにselect句を追加していきます。

今回は範囲内のすべての列を取得しているので、select句を使う場合はこのようになります。「select *」のアスタリスクは「すべて」を意味します。

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

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

特定の列のみを抽出する場合

続いて、select句を用いて指定範囲内のうち指定した列のみを抽出する方法です。
特定の範囲を指定して抽出するには、このように「列1,列2,列3・・・」という形でカンマ区切りで指定します。

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

=query(DB!B3:G6,”select B,C,D where F='”&J3&”‘”)

注意点

なお注意点としては、同一スプレッドシート内のデータベースを参照して抽出している場合は、「A,B,C」のように列表記を使用することが可能ですが、以下のような場面では、相対表記をする必要があるので「Col1,Col2,Col3…」のような形で表記する必要があります

・別のスプレッドシートをデータベースとして抽出する場合
・2つのデータベースを結合して、そこからデータを抽出する場合

=query(DB!B3:G6,”select B,C,D where F='”&J3&”‘”)

=query(importrange(“URL”,”DB!B3:G6″),”select Col1,Col2,Col3 where Col5='”&J3&”‘”)

順番を入れ替えて抽出する

最後に元のデータテーブルとは異なる順番でデータを並び替えて抽出する方法をご紹介します。

selectの後の列表記を「B,C,D」から「D ,C,B」に変えてみると、出力されるデータも企業名とアドレスの列が入れ替わっていることがわかりますね。こんな具合に、元のデータベースはいじれないが、集計先の表で順番を入れ替えたいというケースではこの列順の入れ替えが非常に役に立ちます

=query(DB!B3:G6,”select B,C,D where F='”&J3&”‘”)

=query(DB!B3:G6,”select D,C,B where F='”&J3&”‘”)

まとめ

いかがでしたでしょうか。

今回は、QUERY関数を使ってデータを抽出する方法の応用版としてselect句を活用する方法をご紹介しました。ぜひ使い倒して効率化を図ってみてください。