スプレッドシートをデータベース化してデータを検索するQUERY関数

2021年5月31日

みなさんはGoogleスプレッドシートをお使いでしょうか?

僕は非常に良く使っているのですが、無料で使える上に、使い方によっては様々な用途に利用できるので、とても便利です。

今回はGoogleスプレッドシートをデータベースとして使用し、データを検索する方法を紹介します。

無料で使えるスプレッドシート

“無料で使える”、これが一番すごい点だなと思います。
無料で使えることでExcelなどを使っている人にとっても、導入ハードルは低いので、ぜひ使ってみて欲しいです。

ただ、便利な機能がたくさんある中で、使いこなせていない人が多いというのを感じているところです。

ここがミソで、使い方によって出来ることの幅が広がって、より便利なサービスとして利用できるようになります。

データベースとして使えるスプレッドシート

スプレッドシートの使い方として、よくあるのがデータを管理することです。

システム開発でデータを管理する、というとOracle、SQLServer、MySQLなどのデータベースソフトを使って、というのが多いのですが、まずはスプレッドシートを用いて、データの流れや業務の流れを整理することは非常に有効な手段だと思います。

例えば、社員や顧客の情報を管理するために、以下のようなスプレッドシートを作成します。

スプレッドシートでのデータベース

このようにスプレッドシートでデータを管理することで、様々な用途に使用できます。

データを検索する

スプレッドシートをデータベース化したところで、データを検索してみましょう。
以下のように検索できるシートを用意します。

クエリ

B1セルに検索したい名前(姓)を入力すると、4行目に該当する情報が表示されるという内容です。
例えば、B1セルに「佐藤」と入力すると、結果は以下のようになります。

クエリ結果

4行目に佐藤さんの情報が表示されました。
これは最初に用意したデータから、名前(姓)が「佐藤」の情報を検索して表示しています。

検索するのに使用するのがQUERY関数

検索する時の仕組みは以下のようになっています。
A3セルに以下のようにQUERY関数を定義しています。

=QUERY('社員一覧'!A:F,"where B ='" & B1 & "'",1)

QUERY関数の構文

QUERY関数の構文は以下の通りです。

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

データ

最初にデータベースとして定義したデータを指定しています。
本記事では、「社員一覧」というシートのA列からF列でデータを定義しているため、
'社員一覧’!A:F
という指定をしています。

クエリ

SQLの構文に似た形になっています。

where B =
と、することでB列(名前(姓))の一致検索が行えます。
検索条件には、B1セルを指定しているため、B1セルに”佐藤”と入力すると、
where B =’佐藤’
という条件になります。

見出し

検索結果の見出しを指定することができます。
指定した数字の行数が見出しとなるため、”1”と指定すると、データで指定した’社員一覧’!A:Fの1行目が見出しとなります。

よって、先ほどのようにB1セルに”佐藤”と入力すると、以下のようなQUERY関数となります。

=QUERY('社員一覧'!A:F,"where B ='佐藤'",1)

同様に、以下のようにB1セルに”鈴木”と入力すると、結果は以下のようになります。

クエリ結果

QUERY関数を使うことで、入力内容を元に検索処理を行うことが可能

QUERY関数を使うことで、簡単な検索機能を持ったデータベースを作ることが可能です。
今回は、検索機能としてQUERY関数を紹介しましたが、アイデア次第で様々な用途にも使用できると思います。

このように、スプレッドシートを使うことで、簡単なシステムはすぐに作成できます。
QUERY関数のような関数を1つ覚えておくと、掛かるコストを抑えて業務効率化ができると思いますので、ぜひ使ってみてください。