「Googleスプレッドシート 関数」記事で概観したように、Googleスプレッドシートで利用できる関数は、大半は Excelの関数とほぼ同様に利用できます。
それでも、Googleスプレッドシート独自の関数もあります。
そのようなユニークな関数を少しずつ回を分けてご紹介していきます。
今回は「QUERY」(クエリ)関数をご紹介します。
「クエリ(query)」という用語は、データベースを扱う場面で多用されます。
データベース管理システム(DBMS)に対してデータの検索や更新、削除、抽出などの要求をすることを指します。
英語の query は「問い合わせ(る)」、「訪ねる」などの意味を持ちます。
QUERY関数は、あるデータ群(データベース)から指定した条件でデータを取り出す関数です。
その書式は次のようになります:
=QUERY(データ,クエリ,[見出し])
データ:クエリを実行する参照セル範囲
クエリ:データベースに対する問合せの命令
見出し:省略可能で、データの上にある見出し行の数
ここで、「クエリ」として指定する条件文が最初のうちは難しく感じるかもしれません。
Googleのヘルプページによれば「Google Visualization APIのクエリ言語」で記述する、とあります。
そのクエリ言語については「Query Language Reference」というページで参照できます。
それでも、たくさんのクエリがあって目眩を覚えるでしょうから、例題を参考にして少しずつ取り組んでいくとよろしいでしょう。
下図のようなデータ表が Googleスプレッドシート上にあるとします。
このシートの名前を「会員名簿」としておきます。
そして、(同じシート上でも構いませんが)別のシート「シート2」の適当なセル、ここでは A1セルに次のように入力してみます:
=query('会員名簿'!A2:F11, "where F='大阪府'")
すると、下図のように、条件を満たす行のデータが抽出されました。
この式を
=query('会員名簿'!A1:F11, "where F='大阪府'")
または
=query('会員名簿'!A1:F11, "where F='大阪府'", 1)
と変更すると、下図のように項目行も含めて表示されます。
なお、参照するデータが 10行だけでなく、それ以降もたくさんあるなら
=query('会員名簿'!A1:F, "where F='大阪府'")
のように「A1:F」という形式で書いてもよろしいです。
さらに、A1セルに「大阪府」と入力しておき、A2セルに
=query('会員名簿'!A1:F, "where F='"&A1&"'")
とすると、A1セルの値を参照し、下図のように、条件を満たす行のデータが抽出されました。
こうすると、A1セルを例えば「東京都」と書き換えるだけで、抽出結果が書き換えられます。
次に、A1セルに次のように入力してみます:
=query('会員名簿'!A2:F, "select A,C,E where F='"&A1&"'")
こうすると、下図のように、参照データのうち A、C、E列のみ表示します。
上の例では「where」部分が 1つの文字列に一致する条件でしたが、もちろん比較演算や論理演算などもできます。
例えば、
=query('会員名簿'!A1:F11, "where C >= 60")
とすれば、下図のように、年齢が 60歳以上の会員を抽出できます。
また、
=query('会員名簿'!A1:F, "select B, MAX(C) group by B")
とすれば、下図のように、性別ごとの最高年齢を取り出すことができます。