Google Spreadsheetで複数の列範囲をマージした出力を作る

2021/12/05 13:07

※ 商品のリンクをクリックして何かを購入すると私に少額の報酬が入ることがあります【広告表示】

もっと良いやり方があるかもしれません。良いやり方知ってる人は @everes に教えてください!

取り扱うデータの例

sheet1

sheet1

sheet2

sheet2

sheet_tmp

sheet2

sheet1とsheet2の内容を横に並べてあります

複数の列範囲をまとめる

縦に並べる場合は、波括弧で全体を括って、複数の列範囲をセミコロンで区切ります

別シートの参照は sheet名!列:列 ですね。

それぞれ1000行出力されたものが縦に積まれるのをなんとかする

行数がわかっている場合は、それぞれの列範囲指定で絞り込めば良さそうですが、行数が変わるたびに直すのは嫌ですね。

複数の列をマージしているので、どうやって絞るかという話なんですが、 Col1 のようにして出力の何列目みたいなものを条件にできます。

  =QUERY({sheet_tmp!A:B;sheet_tmp!D:E}, "where Col1 is not null order by Col1", 0)
sheet1

わーい

必要な列だけ持ってくる

列範囲指定箇所にもQUERYを書けるので、複数のシートに分かれたデータから必要な列だけを集められます。

  =QUERY({
    QUERY(sheet1!A:C, "select A, B where C = 1", 0);
    QUERY(sheet2!A:C, "select A, B where C = 1", 0)
  }, "where Col1 is not null order by Col1", 0)
sheet1

わーい

sheet2やsheet3の必要な列範囲に不要な列が含まれている場合には where の前に select を入れれば良いですね。ウェイ

重複を削る

UNIQUE を書けば良いですね。

  =UNIQUE(
    QUERY({
      QUERY(sheet1!A:C, "select A, B where C = 1", 0);
      QUERY(sheet2!A:C, "select A, B where C = 1", 0)
    }, "where Col1 is not null order by Col1", 0)
  )
sheet1

ウェイ

Prev Entry

Next Entry