notebook

都内でWEB系エンジニアやってます。

スプレッドシートでIMPORTRANGEの結果をつなげる

各所で集めたデータをもとにまとめたサマリーを作ることがあったのでメモ

複数のスプレッドシートや複数のシートのデータをつなげたい、その後集計などをしたい場合に使う

IMPORTRANGEで他のシートや他のスプレッドシートのデータを取得してさらにつなげる

方法

{}で囲ってそれぞれを縦の場合は;、横の場合は,でつなぐ

縦方向

SQLでいうUNIONのイメージ

={IMPORTRANGE("id1", "シート名!A1:B5"); IMPORTRANGE("id2", "シート名!A1:B5")}

最初の方のシートが何行目までかという範囲指定は必要そうだった(指定しないとエラーで読み込めなかった)

もとのデータで行が追加されたら都度変更する必要があるので若干不便ではあるがつなげることができる

上がid1のデータ、下がid2のデータ

※ 2022-12-22追記

執筆時は見つけられなかったが、下記のように書くとIMPORTRANGEで参照するシートの行数が変わっても柔軟に取得してくれる

=QUERY(
    {
        QUERY(IMPORTRANGE("id1","シート名!A2:B"), "SELECT *");
        QUERY(IMPORTRANGE("id2","シート名!A2:B"), "SELECT *")
    },
    "WHERE Col1 IS NOT NULL"
  )

QUERY で囲むことで中のQUERYの結果行数が変わったとしても変わった結果からさらにQUERYで表示してくれるよう

求めていたのはこれ感がすごい

横方向

={IMPORTRANGE("id1", "シート名!A1:B5"), IMPORTRANGE("id2", "シート名!A1:B5")}

左がid1のデータ、右がid2のデータ

INDIRECTを使って動的に範囲指定できればさらに使いやすいがサクッとできなかったためここまで