查找列中的重复值,并在消息框中返回行

问题描述 投票:0回答:1

因此,我有一个论坛,用户可以输入数据,并且在输入重复值时需要进行2种不同的检查。

现在我还有其他检查,它根据正在处理的列调用模块。因此这些代码将放在单独的模块中(我让调用将row_value传递给模块。

x = row_value

所以我的范围代码看起来像:Range("E" & x).Value

我需要查看的范围来自E7:G307

我需要的第一个代码是查看并查看他们刚刚输入/修改的Range("E" & x).Value在该E列中的任何其他单元格中是否已经存在。如果是这样,则显示一条消息,引用重复的行#

因此,如果他们在E10单元格中输入“左臀部”,它将检查E7:E307中的所有其他单元格,以查看是否在其他任何E单元格中使用了“左臀部”,并说E7 = Left Hip,然后显示一条消息:`“在第7行发现重复项”

我需要的第二个代码是相似的,除了我需要它同时查看2列中是否有重复项。 F&G,如果匹配项显示一条消息,则引用重复的行#

因此,如果他们将“浪费”输入到单元格F10中并将“水”输入到单元格G10中,那么它将查看F7:G307中的所有其他单元格,以查看同一行上的两个单元格是否都匹配。因此,如果F7 = "Wasted"G7 = "Trash"没有匹配项,但如果匹配G7 = "Water",则两列都将匹配。然后显示消息"Duplicate found on Line 7"请注意,在他们输入“ G”列后,我会进行此检查。

不确定您需要什么其他信息,请随时提问并感谢您的帮助。

注意:我尝试使用Range.Find方法,但无法进行任何操作。我只是不太了解它,我看了一些例子,但又不确定如何使它适应我的需求。

excel vba duplicates find msgbox
1个回答
0
投票

将一系列值传递给数组总是有用的,这样可以更快地处理它们。我认为这是一个有用的开始,可为您指明正确的方向。需要对其进行一些修改,例如您的计数器将从7开始而不是1。

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim value As Variant
    Dim counter As Long

    ''Don't need the empty check, but could be updated to make this static if you wanted to
    Dim values As Variant
    If IsEmpty(values) Then
        values = Worksheets("Sheet1").Range("A1:A700")
    End If

    If Not Intersect(Target, Range("A1:A700")) Is Nothing Then
        counter = 1
        For Each value In values
            If value = Target.value Then
                If Target.Row <> counter Then
                    MsgBox "Duplicate Value on line: " & counter
                End If
            End If
            counter = counter + 1
        Next value
    End If

End Sub
© www.soinside.com 2019 - 2024. All rights reserved.