複数のシートに分かれた同じ形式のデータを1つにまとめたいと思ったことはありませんか。手作業でコピー&ペーストを繰り返すのは時間がかかり、更新のたびに手間が生まれます。GoogleスプレッドシートのQUERY関数と{}(波括弧)構文を使えば、複数シートを自動的に縦方向に結合できます。この記事では、{}構文を用いたQUERYでの縦結合方法を具体例とともに解説します。
【要点】QUERY関数の{}構文で複数シートを縦結合する方法
- ={シート1!範囲; シート2!範囲} の基本構文: セミコロンで区切ることで、複数シートのデータを縦に積み重ねます。
- QUERY関数と組み合わせてフィルタリング: =QUERY({A!A:C; B!A:C}, “where Col1 is not null”) のように、結合後に条件を指定できます。
- 列数が一致しない場合はエラー: すべてのシートで同じ列数が必要です。列数が違う場合は、列を追加して揃える必要があります。
ADVERTISEMENT
目次
{}構文で複数シートを縦結合する仕組み
QUERY関数は、データ範囲に対してSQLライクなクエリを実行できる強力な関数です。{}(波括弧)構文を使うと、複数の範囲を1つの配列として結合できます。縦方向に結合するには、各範囲をセミコロン(;)で区切ります。例えば、={‘シート1’!A:C; ‘シート2’!A:C} と記述すると、シート1のA列からC列のデータの下に、シート2の同じ列のデータが追加されます。この配列をQUERY関数のデータ範囲として指定することで、統合されたデータに対してフィルタリングや並び替えなどを行えます。ただし、すべての範囲で列数が同じでなければエラーになります。
複数シートをQUERYで縦結合する手順
ここでは、3つのシート(シート1、シート2、シート3)に同じ列構成(A列:日付、B列:商品名、C列:金額)のデータが入っている場合を例に、{}構文で縦結合する手順を説明します。
- 統合用のシートを用意する
新しいシートを作成し、統合結果を表示する場所を決めておきます。通常はA1セルから始めるとよいでしょう。 - {}構文で範囲を結合する
統合用シートのA1セルに次の数式を入力します。 ={‘シート1’!A:C; ‘シート2’!A:C; ‘シート3’!A:C} これで3つのシートのデータが縦に結合されます。シート名にスペースや記号が含まれる場合は、シート名をシングルクォーテーションで囲みます。 - QUERY関数でラップする
結合したデータに対してQUERY関数を使って、不要な行を除外したり、並び替えたりします。例えば、ヘッダー行が重複する場合、2行目以降のヘッダーを除外するには次のようにします。 =QUERY({‘シート1’!A:C; ‘シート2’!A:C; ‘シート3’!A:C}, “where Col1 is not null offset 1”, 0) ここで offset 1 は最初の行(ヘッダー)をスキップする指定です。ただし各シートにヘッダーがある場合、最初のシートのヘッダーだけ残し、他は除外する工夫が必要です。 - 結果を確認する
数式が正しく入力されていれば、統合されたデータが一覧表示されます。元のシートのデータを更新すると、統合結果も自動的に反映されます。
{}構文で統合する際の注意点とよくあるトラブル
列数が異なるシートがある場合のエラー
各シートの列数が異なると、#VALUE! エラーが発生します。例えば、シート1がA:C(3列)、シート2がA:B(2列)だと結合できません。この場合は、列数が少ないシートに空白の列を追加して揃えてください。または、範囲指定を列単位で調整する方法もあります。
ヘッダー行が重複する問題
各シートにヘッダー行がある場合、単純に結合するとヘッダーが何度も表示されます。これを防ぐには、QUERYのwhere句やlimit句を使って、2シート目以降のヘッダーをスキップします。例えば、1シート目のヘッダーをそのまま使い、2シート目以降はデータ行のみを含む範囲を指定する方法があります。具体的には、2シート目の範囲を A2:C のように2行目から始めることでヘッダーを除外できます。
空白セルや日付の扱いに関する注意
結合後に空白セルが混在する場合があります。QUERY関数のwhere句で “where Col1 is not null” と指定すると、空白行を除外できます。また、日付がシリアル値として表示される場合は、表示形式を日付に設定すると見やすくなります。
シート名に特殊文字が含まれる場合の対処
シート名にスペースや記号(-、&など)が含まれると、{}構文でエラーになります。その場合はシート名をシングルクォーテーションで囲みます。例: {‘売上データ 2023’!A:C; ‘売上データ 2024’!A:C}
ADVERTISEMENT
QUERYの{}構文と他の統合方法の比較
| 方法 | 特徴 | 柔軟性 | 自動更新 | 学習コスト |
|---|---|---|---|---|
| {}構文+QUERY | 複数シートを1つの配列に結合し、クエリで加工可能 | 高い(フィルタ、並び替え、列選択など) | あり(元データ更新で自動反映) | 中級({}構文とQUERYの知識が必要) |
| 手動コピー&ペースト | シート間でデータを手作業で貼り付け | 低い(手間がかかる) | なし(再コピーが必要) | 低い(誰でも可能) |
| IMPORTRANGE関数 | 別のスプレッドシートからデータを読み込む | 中程度(別ファイルの統合に特化) | あり(一定間隔で再読み込み) | 低い(権限設定が必要) |
| QUERY単体+範囲指定 | =QUERY(シート1!A:C; “…”) などシートごとに別々の数式を使う | 低い(統合はできない) | あり(ただし個別) | 中程度 |
まとめ
この記事では、QUERY関数の{}構文を使って複数シートを縦方向に結合する方法を解説しました。{}構文で範囲をセミコロンで区切ることで、簡単にデータを積み重ねられます。また、QUERY関数と組み合わせれば、統合後のデータに対してフィルタリングや並び替えも可能です。注意点として、列数の一致やヘッダー行の重複対策が必要になります。次は、IMPORTRANGEと組み合わせて別ファイルのシートも統合する方法や、横方向の結合(カンマ区切り)にも挑戦してみてください。
ADVERTISEMENT
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Googleスプレッドシートの人気記事ランキング
- 【Googleスプレッドシート】GOOGLEFINANCE関数で株価・為替を取得!リアルタイムデータの呼び出し
- 【Googleスプレッドシート】印刷範囲を指定して印刷!特定範囲だけPDFや紙に出す手順
- 【Googleスプレッドシート】新しいスプレッドシートを作成する3つの方法!ドライブ・URL・テンプレート
- 【Googleスプレッドシート】数値の連続データを自動入力!オートフィルの活用
- 【Googleスプレッドシート】ダークモードを有効にする!目に優しい配色への切替
- 【Googleスプレッドシート】株価APIで株式データを自動取得!GOOGLEFINANCE超え活用
- 【Googleスプレッドシート】共有相手が編集できない時のチェック!権限と許可状態の確認
- 【Googleスプレッドシート】ページ設定で用紙サイズと向きを調整!印刷レイアウトの基本
- 【Googleスプレッドシート】Excelファイルxlsxをインポートする手順!ドラッグ&ドロップで取り込み
- 【Googleスプレッドシート】条件付き書式をコピーする!書式のみペーストの活用
