我正在使用以下 VBA 代码在列中搜索重复值。
如果找到,那么我想用指向该行号的超链接填充单元格 Q1。
这是我所拥有的:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 15 And Len(Target.Value) > 0 Then
If Evaluate("Countif(O:O," & Target.Address & ")") > 1 Then
Range("P1").Value = "DUPLICATE ENTRY EXISTS"
Range("Q1").Formula= "=HYPERLINK()"
End If
End If
End Sub
请问有人可以告诉我如何获取重复值的行号吗?
最佳答案
我只会使用 Range.Find
方法来完成检查重复和获取地址。您可能需要考虑在某个时间点清除超链接和单元格。您可以检查是否有任何重复,并清除是否是这种情况;或者您可以检查多个重复项,并将它们输出到顺序单元格中。各种事情。
编辑 您还需要决定如何处理 Target
的情况。是一个多单元格范围。考虑 Target
的情况完全在列 O
内,而它不是。
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim R As Range, C As Range
Dim S As String
Set R = Columns(15)
If Not Intersect(Target, R) Is Nothing Then
Application.EnableEvents = False
Set C = R.Find(what:=Target.Text, after:=Target, LookIn:=xlValues, _
lookat:=xlWhole, MatchCase:=False)
If C.Address <> Target.Address Then
S = C.Address(external:=True)
S = Mid(S, InStr(S, "]") + 1)
Range("q1").Hyperlinks.Delete
Range("Q1").Hyperlinks.Add Anchor:=Range("q1"), _
Address:="", SubAddress:=S, _
TextToDisplay:=C.Address, ScreenTip:="Duplicate Entry"
Else 'Clear Q1 if no duplicate
Range("Q1").Clear
End If
End If
Application.EnableEvents = True
End Sub
关于VBA在列和列表行号中查找重复项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42209879/