QUERY関数とIMPORTRANGE関数を組み合わせて別ファイルのデータを集計する方法

Googleスプレッドシートで、「別のファイルにある売上データを集計したい」と思ったことはありませんか?

たとえば

  • 店舗ごとに管理している売上表を、本部用シートにまとめたい
  • アンケートの回答ファイルを1つのシートで確認したい
  • 別ファイルの商品マスタを使って分析したい

そんなときに便利なのが、QUERY関数 × IMPORTRANGE関数の組み合わせです。
今回の記事では、この組み合わせの基本的な使い方や実務で使える実例をお伝えします♪

目次

まずは完成形:基本の書き方

=QUERY(IMPORTRANGE("スプレッドシートのURL", "シート名!範囲"), "クエリ文", ヘッダー行数)

具体例

=QUERY(IMPORTRANGE("URL", "売上シート!A1:D"), "SELECT Col1, Col3 WHERE Col2='りんご'", 1)
  • IMPORTRANGEで外部ファイルのデータを取り込み
  • QUERYで絞り込みや並び替えを実行
  • Col1やCol3などの列番号は“Col○”で表記(A列=Col1、B列=Col2…)

IMPORTRANGE関数で他のファイルからデータを取り込む

IMPORTRANGE関数は、他のGoogleスプレッドシートのデータを読み込む関数です。

基本の形

=IMPORTRANGE("スプレッドシートのURL", "シート名!A1:D")
  • URL:取り込みたいファイルのURLを ” ” で囲む
  • シート名!範囲"売上シート!A1:D" のように書く

初回は「アクセスを許可」する必要あり

IMPORTRANGEを初めて使うときは、エラー(#REF!)が出ます。
その場合は、セルをクリックして表示される「アクセスを許可」を押してください。

QUERY関数で必要な情報だけ抽出・並び替え

QUERY関数は、IMPORTRANGEで取り込んだデータを絞り込んだり並び替えたりするために使います。

ただし、IMPORTRANGEの中身は「A列、B列」のような列名では参照できません。
Col1、Col2…という形式(Col記法)を使う必要があります。

実務で役立つ具体例

別ファイルから「りんご」の売上だけ取り出す

=QUERY(IMPORTRANGE("URL", "売上!A1:D"), "SELECT Col1, Col2, Col3 WHERE Col2='りんご'", 1)
  • A列:日付 → Col1
  • B列:商品名 → Col2
  • C列:売上 → Col3

「Col2が ‘りんご’ に一致する行」だけを抽出します。

売上が高い順に並べ替える

=QUERY(IMPORTRANGE("URL", "売上!A1:D"), "SELECT Col1, Col2, Col3 ORDER BY Col3 DESC", 1)

DESCで「売上(Col3)」を降順に並べ替えます。

複数ファイルをまとめて表示(応用)

各店舗が別のスプレッドシートで売上管理をしているとき、それらをひとつにまとめる方法です。

={
 QUERY(IMPORTRANGE("URL_店舗A", "売上!A1:D"), "SELECT Col1, Col2, Col3", 1);
 QUERY(IMPORTRANGE("URL_店舗B", "売上!A1:D"), "SELECT Col1, Col2, Col3", 1)
}

{ ... ; ... } で上下にデータをつなげて表示します。
関数1本で複数店舗の売上を自動で一覧化できます。

複数ファイルをまとめた配列データを、さらにQUERYで抽出・並び替え

複数のIMPORTRANGEを {...; ...} でまとめた配列に対して、さらにQUERY関数をかけることも可能です。

たとえば、複数店舗の売上データを1つにまとめた上で、「売上が1000円以上の商品だけ」を抽出するには、次のように書きます。

=QUERY(
  {
    QUERY(IMPORTRANGE("URL_店舗A", "売上!A1:D"), "SELECT Col1, Col2, Col3", 1);
    QUERY(IMPORTRANGE("URL_店舗B", "売上!A1:D"), "SELECT Col1, Col2, Col3", 1)
  },
  "SELECT Col1, Col2, Col3 WHERE Col3 >= 1000 ORDER BY Col3 DESC",
  1
)
  • { ...; ... } … 各店舗のデータを縦に結合
  • 外側のQUERY … 結合した全データに対して「売上1000円以上」「降順ソート」を実行
  • 外側の列指定も Col1, Col2, Col3 で統一
よくある用途
全店舗の売上から1,000円以上の商品だけを抽出
最新1週間分の販売データだけを表示(WHERE Col1 >= date)
売上の高い順にランキング(ORDER BY)

よくあるエラーと解決方法

エラー内容原因と対処
#REF!「アクセスの許可」が必要。関数のセルをクリックして許可ボタンを押す
関数 QUERY のパラメータ 〇 のクエリ文字列を解析できませんクエリ文の書き方ミス。Col1 などの列指定を確認
配列結果は自動的に展開されませんでした。行(1)を挿入してください。結果が大きすぎて表示できないため。
関数が入っているシートの一番下の行を追加することで解決する場合がある。
データが表示されない範囲にデータがない、ヘッダー行の数値(1や0)が合っていない

補足:IMPORTRANGEの注意点まとめ

  • 結合元のファイルが削除・移動されると使えなくなる
  • 結合先のユーザーにも閲覧権限が必要
  • 名前付き範囲は非対応。範囲は直接指定が無難

まとめ:QUERYとIMPORTRANGEを組み合わせれば、スプレッドシートの限界を超えられる!

  • 条件付き抽出・並び替え・集計ができるQUERY
  • 別ファイルのデータをそのまま取り込めるIMPORTRANGE

この2つを組み合わせることで、複数ファイルをまたいだデータ集計が自動化できます。
事務作業や売上管理の効率が大幅にアップするので、ぜひ実務で活用してみてください。

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

1994年生まれ。福岡出身、福岡育ち、福岡在住。
エンジニアを数年経験し、現在は事業会社でデータ分析業務に従事しています。
好きな物:猫、ラーメン
取得資格:基本情報技術者、G検定、統計検定2級

目次