列数と列の並びをそろえた複数の表を、QUERYで縦に結合して集計します。
元の結合式の考え方を保ち、入力値を再現できる3つの表で、数量0とデータのない空欄も確認します。
練習ファイルと数式TXTをダウンロードすると、本文の入力を試せます。
XLSXはGoogleへ読み込むための入力例です。
QUERYやIMPORTRANGEの案内セルは、結合を解除して本文の式へ置き換えます。
実務の表を変更する前にファイルを複製してください。
3つの表の列をそろえる
統合入力シートのA1:C3、E1:G3、I1:K3を使います。
いずれも地域、担当、数量の3列で、1行目は見出しです。
| データの範囲 | 2行の入力値 |
|---|---|
| A2:C3 | 東京・A・10/大阪・A・20 |
| E2:G3 | 東京・B・30/名古屋・B・0 |
| I2:K3 | 東京・C・5/大阪・C・15 |
担当別に別シートを使う場合も、3列の意味と並びを同じにします。
式の各範囲を担当A!A2:C3、担当B!A2:C3のように実際のシート名へ変えます。
シート名に空白がある場合はシングルクォーテーションで囲みます。
見出しを除いて縦に結合する
集約!A1へ次の式を入れます。
各入力範囲は2行目からなので、第3引数は0です。
セミコロンで3つの表を縦に結合し、配列の列をCol1~Col3で指定します。
labelで出力の見出しを付けています。
=QUERY({統合入力!A2:C3;統合入力!E2:G3;統合入力!I2:K3},"select * where Col1 is not null label Col1 '地域', Col2 '担当', Col3 '数量'",0)A1:C7に見出しとデータ6行が出ます。
空白行を含む範囲へ広げる場合も、where Col1 is not nullは地域が空欄の行を除く条件です。
地域が空欄の有効な記録も必要なら、この条件をそのまま使いません。
地域別の合計と、担当別のピボット
E1へ次の式を入れると、地域ごとの数量を合計できます。
A1:C7は見出し付きなので、第3引数は1です。
=QUERY(A1:C7,"select A, sum(C) group by A label sum(C) '数量合計'",1)| 地域 | 数量合計 |
|---|---|
| 名古屋 | 0 |
| 大阪 | 35 |
| 東京 | 45 |
H1へ次の式を入れると、担当を行、地域を列にした表になります。
=QUERY(A1:C7,"select B, sum(C) group by B pivot A label sum(C) ''",1)
担当Bの名古屋は入力した数量0なので0、担当Aの名古屋は元の記録がないため空欄です。
空欄をすべて0に変える前に、データがないのか、記録した値が0なのかを判断してください。
見出し・型・範囲のずれを調べる
結合する範囲の列数が違う場合は、各範囲を3列へそろえます。
見出しがデータに混ざる場合は各入力を2行目からにし、入力側の見出しを重ねて結合しないようにします。
出力に見出しを含めた集計では第3引数を1へ戻します。
今回の範囲は3行目までなので、4行目以降の追加データは自動では含まれません。
各表へ行を追加したら入力範囲を広げ、集約結果の行数に合わせて後段のA1:C7も変更します。
実務の件数に合わせた上限を設け、不要な全列参照を増やす前に動作を確認します。
数量が文字列で保存されるとQUERYの型判定で集計から抜ける場合があります。
表示形式だけを数値へ変える操作では変換できないことがあるため、型の切り分けとVALUEの確認例を参考にします。
集約表を元へ戻す
今回追加したA1、E1、H1の式を変更前のコピーへ戻します。
結合元の3つの表は残し、集約の出力範囲を入力元として上書きしないようにします。
別ファイルの表を使う場合は先にIMPORTRANGEの接続を確認し、結合とアクセス許可の問題を分けて調べます。
公式の仕様を確認する
QUERY関数で、現在の引数や操作を確認できます。
本稿の画面は2026年10月2日に、架空データを使ったGoogle Sheetsで確認しています。
練習ファイルの使い方
練習ZIPには2つの入力XLSXと、各記事IDの数式TXTがあります。
非公開の検証ファイルURLは入れていません。
自分のGoogleファイルへ読み込み、本文の設定セルと貼付先に合わせて練習してください。





