VBA在列和列表行号中查找重复项?

标签 vba excel

我正在使用以下 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/

相关文章:

excel - 在 Excel 中,限制单元格范围内的字符总数(如 1000 个)

c# - DataTable 中的 ClosedXML 工作表不遵循文化

java - 创建用于在 Excel 中导入文本文件的脚本的最佳解决方案是什么?

php - 如何将checkbox的值携带到php页面并输出.xls文件?

vba - 将 Access 表数据导出到 Excel

excel - 如果发现错误,用 VBA 播放声音

Excel MATCH + COUNTIF 函数 : retrieving the nth value in an array

php - Codeigniter/PHPExcel 中无法重新声明 Excel 类错误

Excel VBA 自动筛选除三个之外的所有内容

excel - Excel 的排序方式可以不同于其默认的美国字符集吗?