CSVガイド

2つのCSVの差分を比較する方法

最終更新:

要点

2つのCSVを比べるときは、まずどの行とどの行が同じデータかを決める必要があります。 並び順が変わることがあるデータは、顧客コードや取引先コードなど、行ごとに一意なキー列で照合します。 同じキーが複数の行にある場合は、どの行と比べるべきか決められないため、推測で対応づけずに確認が必要です。

例:先月と今月の取引先一覧

先月の一覧(A)と今月の一覧(B)です(架空のデータです)。今月は行と列の順番が変わり、メールの列が追加されています。

取引先コード,取引先名,担当者,電話番号,締め日
S-001,株式会社カケリオ商事,山田,03-0000-0001,20日
S-002,有限会社みほん,佐藤,06-0000-0002,末日
S-003,合同会社サンプル,鈴木,052-000-0003,15日
S-004,架空物産株式会社,田中,011-000-0004,末日
取引先コード,取引先名,電話番号,担当者,締め日,メール
S-003,合同会社サンプル,052-000-0003,鈴木,15日,suzuki@example.invalid
S-001,株式会社カケリオ商事,03-0000-0001,山田␣,20日,yamada@example.invalid
S-002,有限会社みほん,06-0000-0099,佐藤,末日,
S-005,架空商店,02-0000-0005,高橋,10日,takahashi@example.invalid

「␣」は、見えない半角スペースを表しています。

取引先コードで照合すると、次のようになります。

取引先コード結果内容
S-001変更担当者「山田」→「山田␣」(末尾の空白だけの違い)
S-002変更電話番号 06-0000-0002 → 06-0000-0099
S-003同じ行の順番が変わっても、値は同じです。
S-004削除今月の一覧にありません。
S-005追加今月の一覧で増えた取引先です。

列の順番が違っても、列名が同じなら同じ列として比べます。メールの列は「Bで追加された列」になります。

行の順番で比べるか、キー列で照合するか

方法向いているデータ注意点
行の順番で比べる同じ手順で出力され、並び順が変わらないファイル。キー列がないデータ。行が途中に追加・削除されても、その前後は正しく比べられます。並び替えた行は「削除+追加」として表示されます。
キー列で照合する顧客コード・商品コードなど、行ごとに一意な列があるデータ。並び順が変わるデータ。キーが重複している行や、キーが空の行は照合できません。1列で一意にならない場合は、複数の列を組み合わせます(例:店舗コード+日付)。

重複キーと空のキー

同じ取引先コードが今月の一覧に2行あると、先月の1行とどちらを比べるべきかは、ファイルからは決められません。 ExcelのVLOOKUPやXLOOKUPは最初に見つかった行だけを返すため、重複があっても気づかないまま比べてしまうことがあります。 重複しているキーと空のキーは、照合せずに一覧にして、元のデータを確認するのが安全です。

見た目が同じでも違う値

  • 前後の空白。「山田」と「山田␣」は画面では同じに見えますが、別の値です。
  • 全角・半角。「カナ」と「カナ」、「ABC」と「ABC」は別の文字です。
  • 大文字・小文字。メールアドレスなどで違いが出ることがあります。

これらを違いとして扱うかどうかは目的によって変わります。無視する場合も、値そのものは書き換えず、比べるときだけ同じとみなすのが安全です。

Kakerio(CSV Diff)での扱い

  • 行の順番での比較と、キー列(複数列の組み合わせも可)での照合を選べます。
  • 重複キーと空のキーは照合しません。「要確認」として、キーと行番号を一覧にします。
  • 変わったセルを「前 → 後」で表示します。前後の空白やタブ、全角スペースは記号で見えるようにします。
  • 前後の空白・英字の大文字小文字・全角半角(NFKC)を無視する設定は比較だけに使い、表示や保存する値は元のままです。
  • 差分CSVと要約レポートを保存できます。差分CSVは1行に1セルの変更(変更・追加・削除)で、行番号は見出しを1行目として数えます。
  • UTF-8・UTF-16・Shift_JISのファイルを比べられます。文字コードが違うファイルどうしでも、文字として比べます。