二つの売上表を追加でまとめる

LWP | 二つの売上表を追加でまとめる

図解1|二つの入力表から、一つの売上明細を作る

二つのExcelテーブルを入力にして、追加クエリから一つの結果表を作る関係

図1|入力元、処理の手順、出力先の役割を分けます。一行は一件の売上です。

解説1|先に、何を一行として扱うかをそろえる

ストーリー

ワカサギさんは、担当ごとに分かれた売上を一つの表にまとめる説明を書いています。シャケモンと実物を確認しながら、二つの表を縦につなぐ「追加」と、入力が変わったときの「更新」を整理します。

今回の二表は、どちらも一行が一件の売上です。「商品」は売れた商品、「金額」はその売上金額を表します。同じ商品が何度も売れれば、同じ商品名の行が複数あってかまいません。商品別合計は、明細をまとめた後の別の処理です。

入力例|入力Aシート A1:B3

行

A列

B列

1

商品

金額

2

商品A

2000

3

商品B

1500

入力例|入力Bシート A1:B3

行

A列

B列

1

商品

金額

2

商品A

800

3

商品C

1200

Windows版Microsoft 365 Excelの練習用ブックに、入力A・入力Bの二シートを用意します。それぞれA1:B3を選択し、[挿入]→[テーブル]で、先頭行を見出しとしてテーブルにします。[テーブル デザイン]のテーブル名を、それぞれSalesA・SalesBに変更します。金額は円記号付き文字列ではなく数値で入力します。

読むポイント

SalesA・SalesBは自分で編集する入力です。Power Queryは、この二つを読み取って結果を作ります。出力表を入力元として再び追加する構成にはしません。入力と出力を同じ場所に混ぜないことが、更新できる仕組みの出発点です。

図解2|「追加」は、明細を縦につなぐ

入力Aの二行と入力Bの二行を縦につなぎ、四行の結果表を得る

図2|2明細+2明細=4明細です。商品Aの二行も、それぞれ別の売上として残ります。

解説2|入力クエリを用意して、新しいクエリへ追加する

追加は、複数の表の行を縦につなぐ操作です。商品の一致を探して横へ情報を付けるマージとは、目的が異なります。今回は両方の売上明細を残すので、追加を使います。

入力クエリを二つ作る

SalesA内のセルを選び、[データ]→[テーブルまたは範囲から]を開きます。Power Queryエディターでクエリ名を「入力A」にし、商品列はテキスト、金額列は整数にします。[ホーム]→[閉じて読み込む]の▼→[閉じて次に読み込む]で、接続の作成だけを選びます。SalesBも同様に「入力B」として用意します。

追加結果を別のクエリにする

[データ]→[クエリと接続]から入力Aを編集します。エディターの[ホーム]→[クエリの追加]の▼から、新規として追加する項目を選びます。二つのテーブルを選ぶ設定にし、先頭を入力A、二番目を入力Bとして確定します。新しいクエリ名を「売上一覧」にします。

計算結果|売上一覧

商品

金額

商品A

2000

商品B

1500

商品A

800

商品C

1200

ワカサギさん:「商品Aが二行あっても、この段階では正しいんですね。」シャケモン:「はい。別々の売上なので、追加だけで重複削除や合計はしません。」

4行・合計5500になっていることを確認し、[閉じて次に読み込む]からテーブルとして新しいワークシートへ出力します。見出しを除くデータ行を数えます。二つの入力クエリを別に保ったまま、結果専用の売上一覧を更新できる構成になります。

図解3|列の位置より、列名が対応の基準

入力Bの列順を逆にしても、商品と金額は同じ名前の列へ入る

図3|二番目の表で列の並びが違っても、同じ列名の値は同じ列へ入ります。

解説3|横の並びだけを見て、対応を決めない

追加では、各表の一列目同士・二列目同士を無条件でつなぐわけではありません。列名を基準に、結果のどの列へ値を入れるかが決まります。入力Bが「金額、商品」の順でも、列名が同じなら商品の値は商品列に入ります。

比較用の入力B|列順が逆になっている例

金額

商品

800

商品A

1200

商品C

対応させるもの

入力Bの列

追加結果の列

金額

金額

商品

商品

シャケモン:「同じ名前の列へ値が入ります。位置だけで判断しないのがポイントです。」ワカサギさん:「なるほど。見た目の並びをそろえることと、意味をそろえることは別ですね。」

手元で確かめるには

元の入力表を崩さず試すなら、Power Queryエディターの入力Bで列を選び、列の移動操作で並び順を変えます。その後、売上一覧を選び直し、商品Aに800、商品Cに1200が対応していることを確認します。この変更で行数や金額合計が変わることはありません。

読むポイント

同じ「金額」という見出しでも、一方が税込、他方が税抜なら、そのまままとめてよいとは限りません。名前が一致することは追加の対応条件で、業務上の意味が一致することは人が確かめる条件です。今回は両方とも同じ意味・単位の売上金額とします。列の型も数値にそろえ、文字列の数字やエラーが混ざっていないか確認します。

図解4|列名が違うと、別の列になる

金額とAmountが別列になり、持たない側にnullが入る例と修正後を比較する

図4|見出しが違う列は、自動的に同義語としてまとめられません。

解説4|nullを見つけたら、列名と入力を確かめる

入力Bの見出しが「金額」ではなく「Amount」だった場合を考えます。どちらも売上金額のつもりでも、追加は別名の列として扱います。結果には商品・金額・Amountの三列が現れ、その入力に存在しない列の値はnullになります。

結果|入力Aは金額、入力BはAmount

商品

金額

Amount

商品A

2000

null

商品B

1500

null

商品A

null

800

商品C

null

1200

ここで金額列だけを足すと3500です。合計5500のはずなのに2000足りないのは、入力Bの800と1200がAmount列へ入っているためです。nullはゼロという金額を記録した値ではなく、ここでは対応する列の値がないことを示します。

直す順番

まず「金額」と「Amount」が、業務上も同じ意味・単位なのか確認します。同じであれば、入力Bのクエリ内でAmountを金額へ名前変更し、数値型にそろえてから追加します。今回の動きを試すだけなら、入力Bクエリで一時的に金額→Amountへ名前変更し、売上一覧を確認した後、その名前変更ステップを削除して元へ戻せます。

ワカサギさん:「列が増えたら、まず見出しの違いを見ます。」シャケモン:「元データの意味を確かめてから、同じ名前へそろえましょう。」

読むポイント

nullを一律に0へ置き換えると、列名の不一致という原因が見えにくくなります。今回の例では、列名の修正後に商品・金額の二列へ戻り、4行・5500になることを確認します。必要な別項目なら無理に統合せず、別列として扱います。

図解5|入力を変えたら、更新で結果を作り直す

SalesBへ一明細追加して更新すると、四行5500から五行6000へ結果が変わる

図5|新しい行は入力テーブルへ追加し、出力は更新で作り直します。

解説5|毎回手で貼り足す作業を、保存した手順へ変える

Power Queryは、入力から結果を作る手順をブックに保存します。売上が増えたときは、入力テーブルを変更して更新します。前回の結果へ毎回同じデータを貼り足すという意味ではありません。

入力後|SalesBへ三件目を追加

列順や名前を試した場合は、入力Bを商品・金額の正しい状態へ戻しておきます。Excelの入力Bシートでテーブルの直下へ「商品B」「500」を追加し、新しい行がSalesBの範囲内に入ったことを確認します。テーブル外のセルに書いただけなら、入力対象に含まれません。

更新して確かめる

Excelの[データ]→[すべて更新]を実行し、更新が完了してから売上一覧を確認します。元の4明細は残り、新しい明細が一つ加わります。読込中の表示と、完了した結果を区別します。

確認するもの

変更前

変更後

入力Aの明細数

2

2

入力Bの明細数

2

3

売上一覧の明細数

4

5

売上一覧の金額合計

5500

6000

入力を変えずにもう一度更新しても、今回の構成では5明細・6000のままです。出力表を手で直しても、次の更新で入力から作り直されます。訂正する場所は、原則として入力データ、または入力を変換するクエリの手順です。

ワカサギさん:「完成表より、次にどこを更新するかまで説明するんですね。」シャケモン:「入力と結果を分けておけば、毎回の確認も同じ順でできます。」

まとめ・今回の仕掛け

一行の意味をそろえ、列名を合わせ、二つの入力クエリを追加し、結果を別シートへ読み込みました。追加後は行数・金額・列名・型を確認し、変更後も同じ確認を繰り返します。

出典と確認範囲

『ためしてわかる Power Query GUI』V030_261012、6.1.1〜6.1.4の考え方を独立例へ再構成。Microsoft:Append queries。2026-10-13確認。二表の追加、列順違い、列名不一致、入力変更後と再更新をExcelのPower Queryで検証。掲載図は模式図です。