【Googleスプレッドシート | クエリ関数シリーズ8】データ範囲を複数のスプレッドシートから結合する!

スポンサーリンク

データ範囲を複数のスプレッドシートから結合する

これまでシリーズで「クエリ関数」について紹介して来ました。これまでは同じスプレッドシートのファイルの中にクエリ関数を書いてデータ抽出を行って来ましたが、前回こちたの記事で、データ元の範囲指定をIMPORTRANGE関数で指定することで、スプレッドシートをもっと便利に使うことができることを紹介しました。

今回は更に発展させて、IMPORTRANGEで指定する範囲を複数に増やし、結合したデータを範囲指定する方法を紹介します!

これまでのクエリ関数シリーズの記事ははこちら

Google Spreadsheet | クエリ関数シリーズ
Excelには無い、Googleスプレッドシートのクエリ関数の使い方を紹介
">
Google Spreadsheet | クエリ関数シリーズ
Excelには無い、Googleスプレッドシートのクエリ関数の使い方を紹介

IMPORTRANGE関数

この関数は、複数のスプレッドシートがあった場合、あるスプレッドシートから別のスプレッドシートのデータを参照する時に使う関数です。

※EXCELでは、別ブックの参照は、「=」を使ってマウスで選択するだけでできますが、スプレッドシートではそのような操作ができません。

IMPORTRANGE関数についての詳しい記事はこちら

【Googleスプレッドシート|IMPORTRANGE関数】別のスプレッドシートのデータを参照する方法!
別のスプレッドシートのデータを参照する! EXCELだったら、2つのEXCEL開いて、片方のEXCELのセルに「=」入れて、もう一方のEXCELシートの参照したいところをマウスで指定するだけの簡単作続きを読む
">
【Googleスプレッドシート|IMPORTRANGE関数】別のスプレッドシートのデータを参照する方法!
別のスプレッドシートのデータを参照する! EXCELだったら、2つのEXCEL開いて、片方のEXCELのセルに「=」入れて、もう一方のEXCELシートの参照したいところをマウスで指定するだけの簡単作続きを読む

結合方法

クエリ関数で複数のスプレッドシートから範囲を結合するためには、

  1. IMPORTRANGE関数で複数のスプレッドシートの範囲を結合する
  2. 結合した範囲を、クエリ関数の範囲に指定する

といった具合に進めます。

IMPORTRANGEで複数の範囲を結合する

まずは、IMPORTRANGE関数で複数のスプレッドシートを結合する方法から始めます。

次の2つのスプレッドシートを、3つ目の表示用のスプレッドシートに結合して表示させます。

IMPORTRANGE1
IMPORTRANGE2
表示用のスプレッドシート

「IMPORTRANGE1」「IMPORTRANGE2」の2つの同じ項目(店舗名・商品・売上)で構成されたスプレッドシートです。

結合の方法には以下の2つの種類があります。

  • 横結合
  • 縦結合

横結合の構文

{IMPORTRANGE関数,IMPORTRANGE関数}

横結合の場合は、IMPORTRANGE関数を「,」カンマで繋げて、全体を「{}」でくくります。

表示用スプレッドシートのA1セルに、以下の数式を入れます。

={IMPORTRANGE("**スプレッドシートキー1**","'シート1'!A1:C4"), IMPORTRANGE("**スプレッドシートキー2**","'シート1'!A1:C4")}

※IMPORTRANGE関数の使い方が分からない方は先に以下をご覧下さい。

https://hirachin.com/gss-importrange/

注意店として、初めてIMPORTRANGE関数を使う時は、数式を入力した後、次のようなメッセージが流れてアクセス許可をクリックしないといけないのですが、結合するスプレッドシート全てでアクセス許可が行われている状態じゃないとエラーになってしまいます。

数式の入力結果は下記です。

2つのスプレッドシートがよこにつながって表示されました。これが横結合です。

実務ではあまり使わないかもしれないですね。使いやすいの次の紹介する「縦結合」です。

縦結合の構文

{IMPORTRANGE関数;IMPORTRANGE関数}

基本的に横結合と同じですが、IMPORTRANGERANGE関数をつなげる記号が、「;」セミコロンになります。

={IMPORTRANGE("**スプレッドシートキー1**","'シート1'!A1:C4"); IMPORTRANGE("**スプレッドシートキー2**","'シート1'!A1:C4")}

実際に、先程の数式の「,」カンマを「;」セミコロンに変えてみましょう。

図のように、縦につながります。

見出しが2回出てきちゃうのはブサイクなので、範囲の指定に工夫をしましょう。2つ目のIMPORTRANGE関数の読み込み範囲を「A2:C4」に変更します。

2つ目のIMPORTRANGE関数の指定範囲をA2からにすることによって、見出しを除いた範囲を結合しているため、使いやすい形で表示することができました。

クエリ関数に指定の指定する

クエリ関数で複数のスプレッドシートの範囲を結合して指定するには、上記のIMPORTRANGE関数で結合した数式を、そのままクエリ関数のデータ範囲に指定します。

クエリア関数の構文

= QUERY( 範囲, "式")

式は、簡単に1列目と2列目を表示させるクエリ式を入れます。

※クエリ関数が分からない方は先にこちらをどうぞ。

https://hirachin.com/gss/gss-function-query/

表示用のスプレッドシートのA1セルに次の数式を入力します。

=QUERY({IMPORTRANGE("**スプレッドシートキー1**","'シート1'!A1:C4"); IMPORTRANGE("**スプレッドシートキー2**","'シート1'!A2:C4")},"select Col1,Col2")

長いですが、先程のIMPORTRANGE関数の結合とQUERY関数を組み合わせているだけです。

※クエリ関数のデータ範囲を、IMPORTRANGEで指定した場合、AやBといった列名での指定はできません。「Col1」「Col2」などの列番号での指定をして下さい。

結合した範囲の1列目、2列目だけがクエリ関数で抽出されました。

まとめ

以上、今回はクエリ関数に複数のスプレッドシートを結合したデータを指定する方法を紹介しました!

同じ形のスプレッドシートを複数人に配布して、集計用のスプレッドシートに結合してリアルタイムに結果処理するなど、スプレッドシート独特の使い方ができそうですね!