COUNTIF 関数で重複しているか判定する
COUNTIFでA2:A11内にA2の値が何件あるか数え、重複を判定します。
実行前に確認
- COUNTIFは大文字と小文字を区別しません。この例は255文字以内の短い検索値向けです。
1サンプルコード
Sub Example1176()
Dim ws As Worksheet
Dim key As String
Dim n As Long
Set ws = ThisWorkbook.Worksheets("Sheet1")
If IsError(ws.Range("A2").Value) Then Exit Sub
key = CStr(ws.Range("A2").Value)
If Len(key) = 0 Then
MsgBox "A2に値を入れてください。"
Exit Sub
End If
key = Replace(Replace(Replace(key, "~", "~~"), "*", "~*"), "?", "~?")
n = Application.WorksheetFunction.CountIf(ws.Range("A2:A11"), "=" & key)
MsgBox "一致数: " & n & vbCrLf & "重複あり: " & CStr(n > 1)
End Sub表で見る処理のイメージ実行前・実行後のセルを見比べる
A2の「りんご」が、A2自身を含めて何件あるか調べます。
A・B・Cは列、1・2・3は行です。例えば「B2」はB列の2行目のセルです。この表は説明用のサンプルです。
実行前
| A | |
|---|---|
| 1 | 商品 |
| 2 | りんご |
| 3 | みかん |
| 4 | りんご |
| 5 | ぶどう |
| 6 | りんご |
| 7 | みかん |
| 8 | 桃 |
| 9 | ぶどう |
| 10 | 梨 |
| 11 | 桃 |
実行後
| A | |
|---|---|
| 1 | 商品 |
| 2 | りんご(注目セル) |
| 3 | みかん |
| 4 | りんご(注目セル) |
| 5 | ぶどう |
| 6 | りんご(注目セル) |
| 7 | みかん |
| 8 | 桃 |
| 9 | ぶどう |
| 10 | 梨 |
| 11 | 桃 |
色付きは注目する場所です。「—」は未入力、「(空文字)」は数式などが返す空の文字列を表します。
セルの値は変わりません。MsgBoxは「一致数: 3」と「重複あり: True」を改行して表示します。COUNTIFは通常、大文字・小文字を区別しません。
使い方・実行手順を確認する4つの手順で、コードの使い方を確認できます
- 1
練習用のブックを.xlsm形式で保存し、Sheet1という名前のシートを用意します。A2:A11へ重複を含む短い商品名を入れます。
- 2
Alt+F11でVBEを開き、[挿入]→[標準モジュール]へコードを貼り付けます。
- 3
A2が判定する値です。*、?、~は文字そのものとして数えるよう置換しています。
- 4
マクロ内にカーソルを置いてF5で実行します。同じ値が2件以上あればTrueになります。