【VBAリファレンス|実務向け】第10回 重複したデータを関数で探す 1/4:実務で差がつく判定テクニック

スポンサーリンク

導入:なぜ「重複チェック」が重要なのか

実務において、顧客リストや売上データから「重複」を見つける作業は避けて通れません。もし重複したまま集計を行うと、売上が二重にカウントされたり、同じ相手に二回メールを送ってしまうといったヒューマンエラーに直結します。手作業で目視確認するのは非効率ですし、ミスも起きやすいものです。今回は、Excel関数を活用して、誰でも正確に重複を特定する方法を解説します。

基礎知識:重複判定の基本ルール

Excelで重複を探す際、最もよく使われるのが「COUNTIF関数」です。
この関数は「指定した範囲の中で、条件に合うセルがいくつあるか」を数えるものです。例えば、A列にIDが並んでいる場合、「そのIDが範囲内に何回出現するか」をカウントします。
結果が「1」であればユニーク(一意)、「2以上」であれば重複している、という論理で判定を行います。

実装・解決策:COUNTIF関数による判定

具体的な手順としては、判定用の作業列を一つ設けるのが最も安全です。
例えば、A列にデータが入力されている場合、B2セルに「=COUNTIF($A$2:$A$100, A2)」と入力します。これにより、A2の値がリスト全体に何個あるかが表示されます。1より大きい値であれば、それは重複しているデータであると判断できます。

サンプルプログラム:VBAで「重複チェック列」を一括作成する

関数を直接セルに入力しても良いですが、大量のデータがある場合はVBAで自動化すると効率的です。以下のコードは、選択した列の隣に重複判定フラグを立てるマクロです。


Sub AddDuplicateCheck()
' 選択した範囲の隣に重複判定を表示するマクロ
Dim rng As Range
Dim cell As Range

' 現在選択している範囲を対象にする
Set rng = Selection

' 判定用のヘッダーを入力
rng.Cells(1, 2).Value = "重複判定"

' 2行目から最終行までループしてCOUNTIF関数を書き込む
' $A$2:$A$100のような絶対参照を意識して数式を設定
Dim addr As String
addr = rng.Columns(1).Address

For Each cell In rng.Columns(1).Cells
If cell.Row > rng.Row Then
' 重複していれば「重複」、そうでなければ空欄にする数式
cell.Offset(0, 1).Formula = "=IF(COUNTIF(" & addr & "," & cell.Address & ")>1,""重複"","""")"
End If
Next cell

MsgBox "重複チェックが完了しました。"
End Sub

応用・注意点:現場で陥りやすい罠

実務で注意すべきは、「スペースの有無」です。例えば「東京」と「東京 」(末尾にスペースがある)は、人間が見ると同じに見えますが、ExcelのCOUNTIF関数では「別物」として扱われます。
大量のデータを扱う際は、事前に「TRIM関数」などで余分な空白を削除しておくか、置換機能を使ってスペースを一括削除してから判定を行うのが、ベテランの流儀です。また、データ範囲を「名前の定義」や「テーブル機能」にしておくと、行が増減しても数式を書き換える必要がなくなり、運用が非常に楽になります。

タイトルとURLをコピーしました