重複削除で一番危険なのは、「似ている行」まで同じものとして消すことです。完全一致だけを消したい場合は、削除条件を先に固定し、削除前後の件数を必ず照合します。
この記事では、完全一致の条件を先に決め、削除前後の件数を照合しながら重複行だけを消す手順を、Excelの操作例つきで整理します。
先に結論
- 「どの列がすべて同じなら重複とみなすか」を最初に決めて、メモに残す。
- いきなり削除せず、補助列で重複候補に印を付けて目視で確認する。
- 削除後に「元の行数 − 削除件数 = 残った行数」と、金額などの合計値の差分を確認する。
作業前の準備:原本を残し、CSVを正しく開く
- 元のCSVをコピーし、
売上_原本.csvのような名前で別フォルダーに保管する。作業はコピー側で行う。 - CSVをダブルクリックで開くと、先頭の0が消える(例:
00123→123)、長い数字が指数表示になる、日付の形式が変わる、といった変換が起きることがあります。0始まりのコードやIDがある場合は、[データ]→[テキストまたはCSVから]で読み込み、該当列のデータ型を「テキスト」にしてから読み込みます(メニュー名はExcelのバージョンにより異なる場合があります)。 - 削除前の総行数を記録する。A列に必ず値が入る表なら、空いているセルに
=COUNTA(A:A)-1(見出し行を除く)と入力して数えます。
手順1:重複判定に使う列を決める
| 判定方法 | 使う場面 | 注意点 |
|---|---|---|
| 全列一致 | 同じ行が二重に取り込まれた | 1列でも値が違えば別の行として残る |
| 特定列一致(例:取引ID) | その列の値が一意であると保証されている | 一意でない運用だと、正しい行まで消える |
迷ったら全列一致を選びます。特定列一致は「その列が同じなら、他の列も必ず同じ」と言い切れる場合に限ります。
手順2:補助列で重複候補に印を付ける
A〜F列にデータがあり、1行目が見出しの表を例にします。
- G1に
判定キーと入力し、G2に次の式を入れて最終行までコピーします。
=A2&"|"&B2&"|"&C2&"|"&D2&"|"&E2&"|"&F2
特定列一致の場合は、その列だけをつなぎます(1列だけでも =A2&"|" のように区切り記号を付けます)。| を挟むのは、「AB」+「C」と「A」+「BC」が同じキーにならないようにするためと、数字だけのIDが数値として比較されるのを避けるためです。
- H1に
出現回数と入力し、H2に次の式を入れて最終行までコピーします。
=COUNTIF($G$2:G2,G2)
上から数えて何回目の出現かが表示されます。1が最初の行、2以上が削除候補です。
- [データ]→[フィルター]でH列を「1」以外に絞り込み、候補行を目視確認します。注文日や金額が違うのに候補になっている行があれば、判定キーの作り方を見直します。
- 候補件数を
=COUNTIF(H:H,">1")で数えて記録します。
COUNTIFは * ? ~ をワイルドカードとして扱い、255文字を超える検索値ではエラーになります。判定キーにこれらの記号が含まれる場合やキーが長い場合は、H2の式を =SUMPRODUCT(--($G$2:G2=G2)) に置き換えます(行数が多いと計算が遅くなります)。
手順3:削除を実行する
次のどちらかで削除します。
- 補助列を使う:H列を「1」以外に絞り込んだ状態で、表示された行の行番号を選択し、右クリック→[行の削除]。その後フィルターを解除します。
- [重複の削除]を使う:表内のセルを選択し、[データ]→[重複の削除]を開いて、手順1で決めた列だけにチェックを入れて実行します。最初に出てきた行が残り、2件目以降が削除されます。
[重複の削除]では完了時に削除件数と残った件数が表示されるので、手順2で数えた候補件数と一致するか見比べます。
手順4:削除前後を照合する
削除前に、金額列(例:F列)の合計 =SUM(F:F) と、候補行だけの合計 =SUMIF(H:H,">1",F:F) も記録しておきます。
| 確認項目 | 計算 | 合わない場合 |
|---|---|---|
| 行数 | 元の行数 − 削除件数 = 残った行数 | 判定列や空白行の扱いを見直す |
| 件数 | 手順2の候補件数 = 実際の削除件数 | 判定キーと[重複の削除]でチェックした列がずれていないか確認する |
| 金額合計 | 元の合計 − 候補行の合計 = 削除後の合計 | 消すべきでない行が消えていないか確認する |
すべて一致したら補助列(G・H列)を削除し、原本とは別の名前で保存します。CSVで保存する場合は、保存前に0始まりのコードが数値に変わっていないか確認します。
よくある失敗
- 顧客IDだけを判定列にする:顧客IDが同じでも注文日が違えば別取引です。正しい取引まで消えてしまいます。
- 空白行の扱いを決めていない:判定列がすべて空の行同士は重複とみなされます。空行を消してよいかは別に判断します。
- 前後の空白を見落とす:
東京と東京は完全一致ではないため残ります。完全一致の削除としては正しい動作で、まとめたい場合は名寄せの作業になります。 - 大文字と小文字:COUNTIFも[重複の削除]も大文字・小文字を区別しません。
ABCとabcを別の値として扱う必要がある場合は、H2の式を=SUMPRODUCT(--EXACT($G$2:G2,G2))にします。
このページでは扱わないこと
「株式会社青空商事」と「㈱青空商事」のような表記ゆれの統合は扱いません。表記ゆれは推測を含む作業なので、完全一致の削除とは手順を分けます。
次に確認するページ
- 表記ゆれのある会社名をまとめたい:会社名の表記ゆれを名寄せする方法|完全一致では拾えない重複候補
- 複数のCSVを結合したあとに二重取込を確認したい:同じ形式のCSVを複数まとめて1つに結合する方法
参考
- Microsoft: Filter for unique values or remove duplicate values
確認日: 2026-09-28
