CSVの結合と重複確認で、消していい行・残すべき行を見分ける

記事
IT・テクノロジー
Goku|Excel・CSV業務改善

複数のCSVをひとつにまとめたら、同じ商品コードが何度も出てきた。そんなとき、コードだけを選んで「重複の削除」を押す前に、ほかの列も見てください。価格や数量が違う行まで、消してしまうことがあります。

ここでは、小さな商品一覧を例に「まとめる」「確認する」「除外する」を分けて説明します。例はすべて架空です。実在の商品・顧客・取引の情報は使っていません。

■ 最初に決めるのは、何を「同じ」とするか

今回の例は、商品コードごとに1行にしたい商品マスターです。比較する列は「商品コード・商品名・単価」の3列とします。

・3列とも同じ:完全一致の重複候補。重複掲載と確認できた分だけ除外
・コードは同じ、ほかの値が違う:競合。正しい値を確認するまで両方保留
・コードが空欄:照合できないため保留
・コードが違う:原則として別の行

同じ商品が何度も注文された売上明細なら、値が同じでも別の取引かもしれません。完全一致を見つけたことだけでは、削除する理由になりません。注文番号・明細番号・対象期間など、業務上の単位を先に確認します。

■ 8行で考える、残し方の例

表の代わりに、1行ずつ並べます。A・Bは元ファイル名、数字はヘッダーを除いたデータ行の番号です。

A-1 | 0012 | クリップ | 120
A-2 | 0013 | ファイル | 180
A-3 | 0014 | ペン | 90
A-4 | 空欄 | メモ帳 | 100
B-1 | 0012 | クリップ | 120
B-2 | 0013 | ファイル | 200
B-3 | 12 | クリップ | 130
B-4 | 0015 | ケース | 250

この例では「0012」と「12」は別コードというルールです。勝手にゼロを補ったり、数値に変換して同一視したりしません。

A-1とB-1は3列とも一致します。同じ商品マスターの重複掲載と確認できた、という条件で、A-1を残しB-1を除外対象にします。元ファイル名・元行番号は比較対象から外しますが、記録には残します。

A-2とB-2はコードが同じでも単価が異なります。「後のファイルだから最新」「高いほうが正しい」とは判断できません。両方を要確認一覧へ移し、根拠を確認してから決めます。

A-4はコードが空欄です。他の空欄行があっても、同じ商品とは扱いません。

■ 追加ツールを買わずに、小さなCSVを確認する手順

以下は、Excelのデータ取り込み機能を使える環境で行う一例です。Excel自体の利用環境は別途必要です。メニュー名や利用できる機能はバージョン・OSで異なります。

1.原本を残し、作業用コピーを作る
CSVを上書きせず、原本用と作業用を分けます。作業を始める前に、各ファイルの列名とデータ行数をメモします。行数はヘッダーを除いて数えます。セル内改行のあるCSVでは、テキスト上の改行数とデータ件数は一致しません。

2.開く前に、出所とデータの安全性を確認する
出所不明のCSVを、いきなり表計算ソフトで開かないでください。外部から受け取った値が数式として解釈される「CSVインジェクション」があります。「=」「+」「-」「@」などで始まる値は確認対象です。引用符で囲むだけで安全とは限りません。不審な内容は実行せず、テキストとして確認し、判断できなければ取り込みを止めます。業務ファイルを無断で公開サイトへアップロードしないでください。

3.商品コードは文字列として取り込む
CSVのダブルクリックを避け、[データ]→[テキストまたはCSVから]などの取り込み機能を使います。読み込み前に区切り文字・文字コード・プレビューを確認し、コード列を文字列として扱います。Power Queryでは自動の型変換でゼロが失われていないか確認します。すでに「0012」が「12」に変わった後でセルの書式だけを変更しても、元の桁数は判断できません。原本から取り込み直します。

4.列をそろえて、下方向に追加する
ファイルごとに列名・意味・順番・単位を照合します。同じ意味と確認できた列だけをそろえ、2つ目以降はヘッダーを重ねず、データ行を下に追加します。元ファイル名・元行番号の列も付けます。ここでいう結合は行の追加です。コードを使って別の表の列を付け足す処理とは区別してください。

5.削除より先に、同じコードの行を並べて読む
表全体を選び、コードを基準に並べ替えます。コード列だけを並べ替えると、他の列との対応が崩れるおそれがあります。同じコードの行を見比べ、全項目一致・値の食い違い・空欄を分けます。条件付き書式の重複表示も候補探しに使えますが、色が付いたことを削除の判断にしないでください。大文字小文字、全角半角、前後の空白などを区別する業務では、比較ルールを別途決めます。

6.確認済みの重複だけを除外し、記録する
少量なら、確認済みの行に「除外」と理由を書き、採用する行を別シートへコピーする方法があります。Excelの[重複の削除]を使う場合も、作業用コピーで、選択範囲と比較列を確認してください。選んだ列で一致した行は、選んでいない列に違いがあっても行ごと除外されます。この例でコード列だけを選ぶと、単価が異なる0013の片方まで失う原因になります。

7.最後に、件数を合わせる
この例で完全一致の1行だけを除外した場合、内訳は次のとおりです。

入力8行 = 採用4行 + 要確認3行 + 除外1行

採用:A-1、A-3、B-3、B-4
要確認:A-2、B-2、A-4
除外:B-1(A-1との重複掲載と確認済み)

要確認には「競合2行」「コード空欄1行」が含まれます。保留分を含め、手元に残す行は7行です。「8行が4行になった」だけでは、残り4行の扱いが分かりません。除外理由と保留先まで記録すると、あとから説明できます。1行を複数区分に数えないようにします。

■ こんなときは、いったん止める

・同じコードなのに価格・数量・日付が違う
・空白や全角半角を直すと、別コードまで同じになりそう
・コード列に先頭ゼロや長い数字がある
・ファイルによって列の意味や単位が違う
・文字化け、列ずれ、引用符の崩れがある
・件数の差を、除外記録と要確認一覧で説明できない

不明な行を無理に整えるより、理由を添えて残すほうが、次に確認する人が判断しやすくなります。

■ 作業前のチェックリスト

□ 原本と作業用コピーを分けた
□ 比較する列と、残す基準を決めた
□ コードの先頭ゼロを保った
□ 元ファイル名・元行番号を追える
□ 値が違う行と空欄行を保留した
□ 入力=採用+要確認+除外で件数が合った

■ 作業を依頼したい方へ

この記事は、サービス提供者による案内を含みます。Goku|Excel・CSV業務改善では、Excel・CSVの整理サービスをココナラに出品しています。

対応条件は、8,000円/最大3ファイル・合計1,000行・20列/事前に合意した処理5項目まで/修正1回です。納期は作業範囲とデータ確定後3日、同時受付1件です。対応できる内容と条件は、サービスページでご確認ください。


■ 参考資料

Microsoft Support「Import or export text (.txt or .csv) files」
Microsoft Support「Filter for unique values or remove duplicate values」
OWASP Foundation「CSV Injection」

確認日:2026年9月30日
操作説明は上記の一次資料を基に整理しました。架空データと分類例は本記事独自のものです。個別のデータの正しさや、すべてのExcel環境で同じ操作になることを保証するものではありません。
サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す