重複しているか判定する
A2:A11内でA2と同じ文字列が2件以上あるか、ループで調べます。
実行前に確認
- 大文字と小文字を区別します。数字と同じ文字列はCStrで同じになるため、型まで区別する判定ではありません。
1サンプルコード
Sub Example1174()
Dim ws As Worksheet
Dim c As Range
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").Value2)
If Len(key) = 0 Then
MsgBox "A2に検索する値を入れてください。"
Exit Sub
End If
For Each c In ws.Range("A2:A11").Cells
If Not IsError(c.Value) Then
If StrComp(CStr(c.Value2), key, vbBinaryCompare) = 0 Then n = n + 1
End If
Next c
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」を改行して表示します。このループは大文字・小文字も区別します。
使い方・実行手順を確認する4つの手順で、コードの使い方を確認できます
- 1
練習用のブックを.xlsm形式で保存し、Sheet1という名前のシートを用意します。A2:A11に商品コードを入れ、A2と同じコードを他のセルにも入れます。
- 2
Alt+F11でVBEを開き、[挿入]→[標準モジュール]へコードを貼り付けます。
- 3
A2が判定する値、A2:A11が探す範囲です。
- 4
マクロ内にカーソルを置いてF5で実行します。一致数と、2件以上ならTrueが表示されます。