【ソフトウェア】Googleスプレッドシートの表データから、入力された条件で別シートへ抽出する

SQL/データベース(DB)

はじめに

Excelに蓄積されたデータから、条件によって別シートへ抽出したい事案が発生しました。
SQL等に慣れていればGoogleスプレッドのquery関数で簡単に実現できそうです。
データがExcel上にあるので本来はExcelのみで実現させたかったのですが、目的まで最短で行けそうなので取り急ぎGoogleスプレッドシートで行ってみました。

やりたい事

以下のような日付(年月日)と金額の2項目存在する元データから、指定した年月の条件で抽出し日付順に並び替えて出力します。

AB
1日付金額
220210313300
320210211210
420210425451
520210329675
620210207650
720210109354
820210306367
920210424655
1020210316245
シート名「元データ」

例えば2021年3月とA2のセルへ抽出条件を指定した場合、2021年3月のデータを抽出し日付順に別シートへ出力する事を目的とします。

ABC
1抽出年月日付金額
220210320210306367
320210313300
420210316245
520210329675
シート名「抽出データ」

手順

データ出力開始である「B2」セルに、以下のようなquery関数を埋め込みます。

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

解説します。

1:データ
検索及び抽出範囲(データ全て)を指定します。
今回のデータは、シート「元データ」でデータの範囲は、A2~B10になります。

2:クエリ
SQLに慣れている方は、説明は不要ですね。
1:selectで元データから抽出する列を指定します。「select A,B」

whereは抽出条件です。
1:日付を元に検索するので、Aの列を指定します。「where A」
2:抽出する値を指定します。「like A2%」
あいまい検索なのでlikeを使用します。
検索条件は、シート抽出データ内のA2を指定します。
3:データの並び替えをA列に対して行います。「order by A」

3:見出し
今回のデータ抽出は見出しは不要なので「-1」としています。
見出しを作成せずにデータ範囲をA1:B10とすれば、「1」を指定すれば同じ結果となります。

という訳で今回のqueryは、以下で実行可能となります。

=QUERY('元データ'!A2:B10,"select A,B where A like '"&A2&"%' order by A",-1)

まとめ

Googleスプレッドシートのquery関数で、簡単に目的を達成する事ができました。
Excel上でも結果的に別関数や組み合わせで実現可能なのですが、ここまで簡単に行う事は不可能です(多分・・・)
この件については、また別の機会に行ってみたいと思います。

表形式のデータをデータベースのように扱えるのは、かなり便利ですね。

コメント