表・データを整える

2つのCSVを比較する方法|行の順番が違う表から差分を見つける

先月と今月の商品一覧を例に、行順が違う2つのCSVを商品コードで突き合わせる方法を紹介。変更・追加・削除の見分け方と、空欄・重複で比較できない場合の確認先まで分かります。

先月と今月の商品一覧を比べたら、上から順に見て「全部違う」と思ってしまう。途中に新しい商品が入ったり、並び順だけ変わったりすると、行番号では対応を追えません。

同じ商品を示すコードを目印にして、金額などの値を比べるのが先です。この記事では短い架空CSVで、変更された行、片方だけにある行、変わっていない行を見分けます。手元のExcelで作業する場合も、何を基準に比べるかは同じです。

まずは、次の3手順で確認できます。

  1. 商品コードなど、同じ行を識別できる列を決める。
  2. そのコードが同じ行同士で、商品名や金額を比べる。
  3. 差異がある行と、片方だけにある行を分けて元資料を確認する。

すぐ試す場合は、下の架空CSVの例をコピーして、CSV突合・差異確認ツールの左右の欄に貼り付けてください。ファイルを作成しなくても試せます。 ツールを開くだけでは、この記事のデータは入力されません。

CSV比較はどの方法を選ぶ?

ファイルの文字が変わったか、同じ品番の値が変わったか、複数行の合計が変わったかで、使う方法を選びます。たとえば在庫表の確認でも、倉庫別の数量と品番ごとの合計では比べる対象が違います。

確認したいこと方法の候補比較前に決めること
CSVの行や文字そのものの違いWinMergeなどのファイル比較ソフト文字コードや空白を含め、どの違いを確認するか。行の移動と値の変更を分けて読む
行順が違う2表で、同じ品番・倉庫の値の違いこのCSV突合ツール、またはExcelでキーを照合して比較品番+倉庫など、1行を特定するキーと比較列。空欄・重複が残る行は保留する
複数行の数量を、品番・倉庫ごとに合計した値の違いExcelのSUMIFSなどで集計してから比較対象期間・単位・集計条件。空欄を0としてよいかも元資料で確認する

WinMergeの公式マニュアルでは、行や文字の差、移動した行などの表示を説明しています。行の違いを見つけても、それだけで同じ品番同士の対応や在庫の正しさが決まるわけではありません。

数量をまとめる場合は、Microsoftの複数の条件で合計する方法が参考になります。Excelで品番を扱うときも、先頭ゼロなどの元値を残してください。このCSV突合ツールは文字列を比較し、数量の合計・差額・増減率は計算しません。WinMergeとExcelの案内は公式資料に基づく用途の紹介で、この記事のCSVを両ソフトで操作確認した記録ではありません。資料確認日は2026年10月5日です。

行の順番ではなく、商品コードで対応を決める

たとえば旧一覧の1行目が商品コード 001、新一覧の1行目が 003 でも、001 が消えたとは限りません。新一覧の2行目にあれば、同じ商品として金額を比べられます。

比較前に決めるのは二つだけ。キー列は同じ商品を探すための列、比較列は見つけた後に変更を調べる列です。今回は商品コードをキーに、商品名と金額を比較します。コードが商品の種類しか表さず、同じコードが複数の行に現れる仕事なら、枝番なども必要です。適切なキーがない表を、行番号だけで無理に結び付けないでください。

旧一覧の001と003が新一覧では逆順でも、商品コードが同じ行同士を交差する線で結ぶ図
行番号ではなく商品コードを目印に対応を探します。線の種類に判定上の違いはありません。
旧一覧の001と003が新一覧では逆順でも、商品コードが同じ行同士を交差する線で結ぶ図

旧一覧と新一覧を、架空のCSVで試す

以下は説明用の架空データです。実際の顧客や勤務先の情報ではありません。コード枠の「コピーする」を押し、旧一覧をツールの左、新一覧を右の「表を貼り付け」欄に貼ります。 区切りは左右とも「カンマ(CSV)」に変更してください。

ファイル選択で試す場合は、メモ帳などにそれぞれ貼り、old-products.csv と new-products.csv の名前で保存しても構いません。最初はExcelで開き直さず、先頭の 001 が残ったCSVのまま使います。

旧一覧(左の表)

商品コード,商品名,金額
001,ノートA,100
002,ペンB,200
003,ファイルC,300

新一覧(右の表)

商品コード,商品名,金額
003,ファイルC,300
001,ノートA,120
004,封筒D,400

新一覧では行順を入れ替え、001 の金額を変更し、004 を追加しました。旧一覧の 002 は新一覧にありません。ここで「左のみ」は旧側だけ、「右のみ」は新側だけを意味します。左のみを、そのまま販売終了や削除確定とは呼べません。 抽出条件や出力時点が違う可能性もあるからです。

CSV突合ツールで、キー列と比較列を選ぶ

この例では、ブラウザの「CSV突合・差異確認」で次の順に確認しました。入力した表の内容はブラウザ内で処理されますが、勤務先の実データを扱うときは外部ツールの利用規程を先に確認してください。

  1. 旧一覧を「1. 左の表」、新一覧を「2. 右の表」に入力する。ファイル選択でも表の貼り付けでもよい。
  2. 区切りを「カンマ(CSV)」にし、それぞれ「見出し・先頭行を確認」を押す。プレビューで 商品コード、商品名、金額 が別々の3列になり、値 001 が残っていることを確かめる。1列にまとまっていたら、区切りの設定を見直す。
  3. 「キー列」は左右とも列番号 1(商品コード)。「比較列」は左右とも列番号 2(商品名)を確認し、「比較列を追加」で左右の列番号 3(金額)を加える。
  4. 「差異を確認する」を押し、結果の件数と各行を読む。

この短い例では、金額の3列目だけを比較しても以下の4分類は同じです。ただし商品名を比較しなければ、名前だけの変更は差異に出ません。実際の仕事では、何を「変わった」と判定したいかに合わせて比較列を選びます。

CSV突合・差異確認

商品コードなどのキーで2つの表を比べたい方へ。別サイト・別タブで開きます。

この例のCSVを貼り付けて比較する(別タブで開く)

各ボタンの説明、列順が左右で異なる場合の設定、作業の再開方法はCSV突合の使い方で確認できます。ここでは業務上の結果の読み方に絞ります。

結果の4分類を、元のCSVと照らし合わせる

実際に入力すると、一致1・差異1・左のみ1・右のみ1・判定不能0 と表示されました。下の画像は、この架空データを公開中のツールで比較した結果画面です。

架空の商品一覧を比較した画面。一致1、差異1、左のみ1、右のみ1、判定不能0。001の金額は100から120へ変わっている
公開中のCSV突合ツールで架空データを比較した結果(2026-09-24確認)。表が小さく見える場合は拡大できます。
架空の商品一覧を比較した画面。一致1、差異1、左のみ1、右のみ1、判定不能0。001の金額は100から120へ変わっている
結果商品コード元の行と、次に確認すること
差異001旧1行目・新2行目。金額が 100 → 120。変更が意図したものか、元資料を確認する。
左のみ002旧2行目だけ。新一覧の対象範囲や抽出時点を確認する。
一致003旧3行目・新1行目。商品名と金額が同じ。
右のみ004新3行目だけ。追加として扱ってよいか元資料を確認する。

この例で行番号がずれていても、003 は一致です。一方 001 は同じコードでも金額が異なるため差異になります。表の「左データ行」「右データ行」は、見出しを除いたデータ行の番号です。表示順や見出し付きのファイル内の物理行番号と混同しないでください。

結果表内を検索したり列見出しで並べ替えたりする操作は画面上の表示だけに適用されます。出力するCSVの対象を絞りたいときは「状態で絞り込み」を使います。

記事のCSVをファイルでも試す

本文の旧一覧CSVと新一覧CSVを保存できます。どちらも説明用の架空データです。期待結果の一覧で4品番の状態を確認し、画面の結果と比べてください。CSVをExcelで開いて再保存すると、先頭ゼロなどの表記が変わる場合があります。練習では元CSVをそのままツールへ選んでください。

品番の重複で判定不能になった場合は複合キーの選び方を、単価表に当てはめる場合は新旧単価表の例を参照できます。単価の比較でも、文字の違いを見つける段階と、金額として確認する段階を分けます。

自分の表に近い練習例を選ぶ

行順の入れ替え、同じ品番の重複、仕入先と自社の品番の違いでは、比較前の準備が異なります。次の3例は架空CSVと確認手順があるため、実データを入れる前に試せます。

比較できない行は、無理に合わせない

商品コードが空欄の行は、相手側も空欄だからといって同じ商品とは判断できません。また左に 001 が2行、右に1行ある場合、どの左行を結び付けるべきか決まりません。別の小さな架空データで試すと、空欄が左右に1行ずつなら2行が判定不能、左に同じコード2行と右に1行なら関係する3行が判定不能になりました。

先頭のゼロも自動では直しません。左の 001 と右の 1 を同じ数量で比べても、「左のみ」「右のみ」が各1行でした。余分な空白、大文字小文字、全角・半角なども勝手に同一視しない仕様です。表記をそろえてよいかは元データの意味と取込先のルールで決め、原本を残してから見直します。

金額は文字列の完全一致です。100 と 100.0 の数値的な同一性を判断したり、誤差を許したりはしません。日付の変換、複数行の合算、分納の照合も対象外です。差異が出たら、結果を正解として確定する前にその行の原資料へ戻ってください。

結果と原本を別々に保存して見直す

今回の架空データでは、結果CSVと結果JSON(元値)をそれぞれダウンロードし、CSVを開き直して4行、JSONの元値も 001 と金額 100 / 120 のままであることを確認しました。結果CSVは状態の絞り込みが反映され、結果JSONは全結果を含みます。結果JSONは作業の再開ファイルではありません。 入力を含めて後で再開するなら「入力を含む作業JSON保存」を選びます。

元CSVを上書きせず、照合結果は別ファイルとして残すのが安全です。出力CSVは表計算ソフトで開いたとき、先頭ゼロなどの値が再解釈される場合があります。元値の確認には結果JSONや元CSVを使い、次のシステムへ取り込む前にはそのシステムの指定形式・社内の確認手順と照らしてください。ツールが「一致」と表示しても、取引上の正しさや取込成功まで保証するものではありません。

まずは上の2表をそのまま試し、001 と 003 が別の結果になる理由を結果表で確かめてみてください。それが分かれば、自分の表に替えたときも、どの列をキーにするべきか判断しやすくなります。

参考資料

あわせて読みたい

同じテーマの記事を見る