'重複データの行番号を調べるサンプルマクロ 'Sheet1のA列をチェックし、Sheet2に結果を表示します。 '重複データは、その行番号を列方向へ出力するので、最大255件までです。 '注意! Sheet2のデータはすべてクリアされます! Option Explicit Sub CheckDuplication() Dim range1 As Range, range2 As Range Dim a() As Long Dim i As Long, j As Long, n As Long Dim iRow As Long, iCol As Long, iBase As Long Dim v As Variant Application.ScreenUpdating = False '入力範囲と出力範囲の設定 Set range1 = Sheets("Sheet1").Range("A1").CurrentRegion.Columns(1) Set range2 = Sheets("Sheet2").Range("A1") '出力シートのクリア range2.Worksheet.Cells.Clear '行数の取得 n = range1.Rows.Count '配列の初期化 ReDim a(1 To n) '重複データを調べる '配列要素には、重複データがなければ0、あれば次の重複データの行番号 '(1件目だけは行番号*-1)、次の重複データがなければ1を設定する。 For i = 1 To n - 1 v = Application.Match(range1.Cells(i, 1).Value, _ range1.Cells(i + 1, 1).Resize(n - i, 1), 0) If Not IsError(v) Then j = i + v If a(i) = 0 Then a(i) = j * -1 Else a(i) = j a(j) = 1 End If Next '結果の出力 range2.Range("A1:B1").Value = Array("重複値", "行番号") iBase = range1.Row - 1 iRow = 2 For i = 1 To n If a(i) < 0 Then range2.Cells(iRow, 1).Value = range1.Cells(i, 1).Value range2.Cells(iRow, 2).Value = i + iBase iCol = 3 j = Abs(a(i)) Do range2.Cells(iRow, iCol).Value = j + iBase iCol = iCol + 1 j = a(j) Loop Until j = 1 iRow = iRow + 1 End If Next End Sub