QUERY関数の基本!別シートのデータからselect句で列を取得する方法


QUERY関数2アイキャッチ-3

みなさんこんにちは!
もり(@moripro3)です

GoogleスプレッドシートQUERY関数の使い方をシリーズでお届けしています!

前回は「QUERY関数の最初の一歩」として、クエリとは何か?QUERY関数を使うメリットは?をお伝えしました。

スプレッドシートのQUERY関数を使う最初の一歩!クエリを理解する
GoogleスプレッドシートのQUERY関数を紹介するシリーズ。第一回目は、「クエリ」とは何か?クエリでデータを抽出するイメージ・QUERY関数を使うメリットをお伝えします。

今回の記事では、QUERY関数の基本の使い方を紹介します。

  • QUERY関数の3つの引数を理解する
  • 別シートのデータを参照する方法
  • select句で列を抽出する方法

それではみていきましょう!

前回のおさらい:QUERY関数とは

QUERY関数とは「データ」に「クエリ」を指定して、目的のデータを抽出する関数です。クエリとは問合せのことでしたね。

そして、QUERY関数を使用する2大メリットがこちらです。

  • 一度セルに関数を入力すれば、元データに変更が発生した場合も、自動で結果が反映される
  • 元データと抽出データ(結果)を別シートに分けることが可能

QUERY関数の構文が下記で、3つの引数を指定します。(公式ドキュメントはこちら

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

QUERY関数の3つの引数を理解しよう

この項では、QUERY関数の3つの引数を詳しくみていきます。

引数 省略の可否 説明
データ 必須 クエリを実行するセルの範囲
クエリ 必須 データ操作を実行する条件
見出し 省略可 データの上部にある見出し行の数

前回、社員一覧(A~D列)からタカハシさんを抽出したQUERY関数がこちらでした。

query2-1

 

F1セルに入力されているQUERY関数の中身です。①~③の3つの引数を指定します。

query2-2

第1引数:データ

クエリを実行するセルの範囲を指定します。

  • 列全体を指定する場合→A:D
  • セル番地で指定する場合→A1:D9

列に値が増えていく想定だと、「列全体」の指定がオススメです。

また、同一スプレッドシート内の別シートを指定する、IMPORTRANGE関数を使用して別のスプレッドシートを指定することも可能です。

IMPORTRANGE関数は、こちらの「他のスプレッドシートの範囲を参照する」の項をご覧ください。

スプレッドシートで別ファイルのデータをVLOOKUPで取得する方法
GoogleスプレッドシートではIMPORTRANGE関数を使って別の異なるスプレッドシートからVLOOKUPでデータを引っ張ってくることができますので、その方法についてお伝えしていきます

第2引数:クエリ

クエリとは「問合せ」のことです。どのような「条件」でデータ抽出するかを指定します。

query1-2

クエリは、二重引用符(ダブルクォート)で囲む必要があります。

where C = ‘タカハシ’

または、セルへの参照も可能です。

クエリ言語をより深く学びたい方は、こちらのドキュメント(英語版)もご覧ください。

第3引数:見出し

データの上部にある見出し行の数を指定します。省略、または、 -1 と指定した場合は、データの内容に基づいて推測されます。

つまり、意図しない結果が返ることもあるので、省略せずに指定しておいたほうがよいでしょう。上記の例だと、A:D列の1行目が見出しなので「1」を指定してます。

別シートのデータを参照する方法

課題一覧表のサンプル使用して紹介していきます。(シート名:課題一覧表)

query2-3

QUERY関数を使うメリットの1つに「元データと抽出データ(結果)を別シートに分けて管理できる」がありましたね。

QUERY関数で別シートを参照する場合の、第1引数の指定方法がこちらです。

    ‘シート名’!セル範囲

    セル範囲の前に ‘シート名’! を付けます(シート名をシングルクォートで囲って、!を付与)

    課題一覧表のA列~E列を参照する場合は、‘課題一覧表’!A:E と記述します。

    それでは次の項で、課題一覧表シートから列の抽出をしてみましょう!

    select句で任意の列を抽出する

    select句とは、データから列を抽出するクエリです。「抽出する列」と「順序」を指定できます。

    まずは、基本の3パターンの書き方を覚えましょう!

    1. 1列のみを抽出する
    2. 複数列を抽出する
    3. すべての列を抽出する

    1列のみを抽出する

    元データから、特定の1列のみを抽出する書き方です。

    selectの後にスプレッドシートの「列」を記述します(列はアルファベットで指定)

    select 列

    課題一覧表シートのA列を新規シートに抽出してみます。第2引数のクエリをダブルクオートで囲むのをお忘れなく!

    query2-13

    複数の列を抽出する

    元データから複数の列を抽出する書き方です。列名をカンマ区切りで指定します。

    select 列,列,列…

    課題一覧表シートのA列・C列・D列を新規シートに抽出してみます。

    query2-14

    列の抽出順序は、アルファベット順とは限らず、入れ替えることも可能です。
    A列、D列、C列の順番で抽出(表示)させてみます。期限とステータスの列を入れ替えて取得できました。

    query2-15

    列数が多い(横に長い)データの必要列のみを印刷するときに、「列の非表示」で不要な列を隠している方、いませんか?こんな風に。

    query2-16

    元データをいじると、全データを見たいときに再度列を表示させなければならず、手間がかかりますよね。あとから元データを見る人も、(ん…?この非表示列、何だろう?)って気になっちゃいますからね。

    QUERY関数のselect句を活用すれば、元データを一切いじることなく、新規シートに必要な列のみを抽出できます!しかも、列の並び順も自由に指定可能です!

    列数の多いデータの管理に苦戦している方は、ぜひ使ってみてくださいね!

    すべての列を抽出する

    最後に、元データのすべての列を抽出する書き方です。

    selectのあとに、アスタリスク(*)を付けます。アスタリスクは「すべて」の意味です。

    select *

    課題一覧表シートのすべての列を新規シートに抽出してみます。

    query2-12

    今の段階では、すべての列を抽出すると、元データをそっくりそのまま取得しただけになります。何の意味があるの?と思いますよね。

    シリーズを通して紹介する他の句と組み合わせる時に役立ちます。この記事では、「アスタリスクですべての列を取得できる」と覚えておきましょう!

    まとめ

    今回の記事では、この3点を紹介しました。

    • QUERY関数の3つの引数
    • 別シートの元データを参照する方法
    • select句で列を抽出する方法、順序を指定する方法
      • select 列(1列を抽出)
      • select 列,列,列…(複数列を抽出)
      • select *(すべての列を抽出)

    次回は、where句を使用して、任意の行を抽出する方法をお伝えします!

    【QUERY関数】where句と比較演算子を使って単一条件に一致した行を抽出する
    GoogleスプレッドシートのQUERY関数を紹介するシリーズ。第三回目は、where句と比較演算子を使用して、指定条件に一致する行を抽出する方法を紹介しています。

    連載目次:GoogleスプレッドシートQUERY関数をマスターしよう

    スプレッドシートのQUERY関数を使って、データ抽出・集計を効率化する方法を紹介しています。

    1. スプレッドシートのQUERY関数を使う最初の一歩!クエリを理解する
    2. QUERY関数の基本!別シートのデータからselect句で列を取得する方法
    3. 【QUERY関数】where句と比較演算子を使って単一条件に一致した行を抽出する
    4. 【QUERY関数】where句とlike演算子を使用して指定の文字を含む行を抽出する
    5. 【QUERY関数】where句で日付データを条件にして行を抽出する
    6. 【QUERY関数】where句で時刻データを条件にして行を抽出する
    7. 【QUERY関数】where句でand,orを使用して複数条件を指定する
    8. 【QUERY関数】order by句で抽出結果を昇順・降順ソートする
    9. 【QUERY関数】group by句とcount関数で列のデータ数をカウントする
    10. 【QUERY関数】group by句とsum関数で列の値の合計値を求める
    11. 【QUERY関数】group by句とavg関数で列の値の平均値を求める
    12. 【QUERY関数】group by句とmax・min関数で列の最大値・最小値を求める
    13. 【QUERY関数】group by句で複数の列をグループ化して集計する

      投稿者プロフィール

    もり
    もりITライター
    GoogleAppsScript, VBAを専門とするITライターです。

    退屈なことはプログラミングで片づけよう!
    自らの事務職経験を活かし、事務作業をとことんラクにできるITネタを発信していきます。

    個人ブログ『もりさんのプログラミング手帳』も運営中!

    お気軽にTwitterフォローしてくださいね!

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