sub写出匹配值vba

时间:2015-12-11 11:17:32

标签: excel vba excel-vba

所以我正在研究一个子,它找到给定范围内的匹配值并将它们写出来。 问题是我的版本写出了该范围内的每个值,所以我希望在改变它时有一点帮助,以便它只写出匹配的那些。 提前谢谢。

Sub azonos2a()
Dim rng As range
Set rng = Application.InputBox("range", , , , , , , 8)

Dim a

Dim c
Dim d

With ActiveSheet


For Each c In rng.Cells
    For Each d In rng.Cells
        If c.Value = d.Value Then
            MsgBox c.Value
        End If
    Next
Next

End With

End Sub

1 个答案:

答案 0 :(得分:2)

在嵌套循环中,您将范围中的每个单元格与范围中的每个单元格进行比较 - 包括自身。您需要一个嵌套循环,其中内部循环通过不同于外部循环的值,但是以这种方式比较所有不同的单元格对。最简单的方法是使用索引:

Sub azonos2a()
Dim rng As Range
Set rng = Application.InputBox("range", , , , , , , 8)

Dim i As Long, j As Long, n As Long
n = rng.Cells.Count

For i = 1 To n - 1
    For j = i + 1 To n
        If rng.Cells(i).Value = rng.Cells(j).Value Then
            MsgBox rng.Cells(i).Value
        End If
    Next j
Next i

End Sub