みなさんこんにちは!
もり(@moripro3)です
GoogleスプレッドシートQUERY関数の使い方をシリーズでお届けしています!
前回は「QUERY関数の最初の一歩」として、クエリとは何か?QUERY関数を使うメリットは?をお伝えしました。
今回の記事では、QUERY関数の基本の使い方を紹介します。
- QUERY関数の3つの引数を理解する
- 別シートのデータを参照する方法
- select句で列を抽出する方法
それではみていきましょう!
前回のおさらい:QUERY関数とは
QUERY関数とは「データ」に「クエリ」を指定して、目的のデータを抽出する関数です。クエリとは問合せのことでしたね。
そして、QUERY関数を使用する2大メリットがこちらです。
- 一度セルに関数を入力すれば、元データに変更が発生した場合も、自動で結果が反映される
- 元データと抽出データ(結果)を別シートに分けることが可能
QUERY関数の構文が下記で、3つの引数を指定します。(公式ドキュメントはこちら)
QUERY関数の3つの引数を理解しよう
この項では、QUERY関数の3つの引数を詳しくみていきます。
引数 | 省略の可否 | 説明 |
---|---|---|
データ | 必須 | クエリを実行するセルの範囲 |
クエリ | 必須 | データ操作を実行する条件 |
見出し | 省略可 | データの上部にある見出し行の数 |
前回、社員一覧(A~D列)からタカハシさんを抽出したQUERY関数がこちらでした。
F1セルに入力されているQUERY関数の中身です。①~③の3つの引数を指定します。
第1引数:データ
クエリを実行するセルの範囲を指定します。
- 列全体を指定する場合→A:D
- セル番地で指定する場合→A1:D9
列に値が増えていく想定だと、「列全体」の指定がオススメです。
また、同一スプレッドシート内の別シートを指定する、IMPORTRANGE関数を使用して別のスプレッドシートを指定することも可能です。
IMPORTRANGE関数は、こちらの「他のスプレッドシートの範囲を参照する」の項をご覧ください。
第2引数:クエリ
クエリとは「問合せ」のことです。どのような「条件」でデータ抽出するかを指定します。
クエリは、二重引用符(ダブルクォート)で囲む必要があります。
“where C = ‘タカハシ’“
または、セルへの参照も可能です。
クエリ言語をより深く学びたい方は、こちらのドキュメント(英語版)もご覧ください。
第3引数:見出し
データの上部にある見出し行の数を指定します。省略、または、 -1 と指定した場合は、データの内容に基づいて推測されます。
つまり、意図しない結果が返ることもあるので、省略せずに指定しておいたほうがよいでしょう。上記の例だと、A:D列の1行目が見出しなので「1」を指定してます。
別シートのデータを参照する方法
課題一覧表のサンプル使用して紹介していきます。(シート名:課題一覧表)
QUERY関数を使うメリットの1つに「元データと抽出データ(結果)を別シートに分けて管理できる」がありましたね。
QUERY関数で別シートを参照する場合の、第1引数の指定方法がこちらです。
セル範囲の前に ‘シート名’! を付けます(シート名をシングルクォートで囲って、!を付与)
課題一覧表のA列~E列を参照する場合は、‘課題一覧表’!A:E と記述します。
それでは次の項で、課題一覧表シートから列の抽出をしてみましょう!
select句で任意の列を抽出する
select句とは、データから列を抽出するクエリです。「抽出する列」と「順序」を指定できます。
まずは、基本の3パターンの書き方を覚えましょう!
- 1列のみを抽出する
- 複数列を抽出する
- すべての列を抽出する
1列のみを抽出する
元データから、特定の1列のみを抽出する書き方です。
selectの後にスプレッドシートの「列」を記述します(列はアルファベットで指定)
課題一覧表シートのA列を新規シートに抽出してみます。第2引数のクエリをダブルクオートで囲むのをお忘れなく!
複数の列を抽出する
元データから複数の列を抽出する書き方です。列名をカンマ区切りで指定します。
課題一覧表シートのA列・C列・D列を新規シートに抽出してみます。
=query('課題一覧表'!A:E,"select A,C,D",1)
列の抽出順序は、アルファベット順とは限らず、入れ替えることも可能です。
A列、D列、C列の順番で抽出(表示)させてみます。期限とステータスの列を入れ替えて取得できました。
列数が多い(横に長い)データの必要列のみを印刷するときに、「列の非表示」で不要な列を隠している方、いませんか?こんな風に。
元データをいじると、全データを見たいときに再度列を表示させなければならず、手間がかかりますよね。あとから元データを見る人も、(ん…?この非表示列、何だろう?)って気になっちゃいますからね。
QUERY関数のselect句を活用すれば、元データを一切いじることなく、新規シートに必要な列のみを抽出できます!しかも、列の並び順も自由に指定可能です!
列数の多いデータの管理に苦戦している方は、ぜひ使ってみてくださいね!
すべての列を抽出する
最後に、元データのすべての列を抽出する書き方です。
selectのあとに、アスタリスク(*)を付けます。アスタリスクは「すべて」の意味です。
課題一覧表シートのすべての列を新規シートに抽出してみます。
今の段階では、すべての列を抽出すると、元データをそっくりそのまま取得しただけになります。何の意味があるの?と思いますよね。
シリーズを通して紹介する他の句と組み合わせる時に役立ちます。この記事では、「アスタリスクですべての列を取得できる」と覚えておきましょう!
まとめ
今回の記事では、この3点を紹介しました。
- QUERY関数の3つの引数
- 別シートの元データを参照する方法
- select句で列を抽出する方法、順序を指定する方法
- select 列(1列を抽出)
- select 列,列,列…(複数列を抽出)
- select *(すべての列を抽出)
次回は、where句を使用して、任意の行を抽出する方法をお伝えします!
連載目次:GoogleスプレッドシートQUERY関数をマスターしよう
スプレッドシートのQUERY関数を使って、データ抽出・集計を効率化する方法を紹介しています。
- スプレッドシートのQUERY関数を使う最初の一歩!クエリを理解する
- QUERY関数の基本!別シートのデータからselect句で列を取得する方法
- 【QUERY関数】where句と比較演算子を使って単一条件に一致した行を抽出する
- 【QUERY関数】where句とlike演算子を使用して指定の文字を含む行を抽出する
- 【QUERY関数】where句で日付データを条件にして行を抽出する
- 【QUERY関数】where句で時刻データを条件にして行を抽出する
- 【QUERY関数】where句でand,orを使用して複数条件を指定する
- 【QUERY関数】order by句で抽出結果を昇順・降順ソートする
- 【QUERY関数】group by句とcount関数で列のデータ数をカウントする
- 【QUERY関数】group by句とsum関数で列の値の合計値を求める
- 【QUERY関数】group by句とavg関数で列の値の平均値を求める
- 【QUERY関数】group by句とmax・min関数で列の最大値・最小値を求める
- 【QUERY関数】group by句で複数の列をグループ化して集計する