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