← コード一覧へ戻る
実務セル・範囲

重複しているか判定する

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. 1

    練習用のブックを.xlsm形式で保存し、Sheet1という名前のシートを用意します。A2:A11に商品コードを入れ、A2と同じコードを他のセルにも入れます。

  2. 2

    Alt+F11でVBEを開き、[挿入]→[標準モジュール]へコードを貼り付けます。

  3. 3

    A2が判定する値、A2:A11が探す範囲です。

  4. 4

    マクロ内にカーソルを置いてF5で実行します。一致数と、2件以上ならTrueが表示されます。

使っている機能の公式ドキュメント(Microsoft Learn)