【问题标题】:Find Duplicate Values in a column(s) return with message box the lines在列中查找重复值返回带有消息框的行
【发布时间】:2020-07-30 01:33:23
【问题描述】:

所以我有一个用户输入数据的论坛,我需要在输入数据时对重复值进行 2 次不同的检查。

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

x = row_value

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

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

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

因此,如果他们将“左髋”输入到单元格E10,它会检查E7:E307 中的所有其他单元格,以查看“左髋”是否在任何其他E 单元格中使用,然后说E7 = Left Hip ,然后显示一条消息:`"Duplicate found on Line 7"

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

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

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

注意:我尝试使用Range.Find 方法,但无法正常工作。我只是不太了解它,我查看了示例,但再次不确定如何使其适应我的需求。

【问题讨论】:

  • 您已经在解决您的问题的轨道上,因为您正专注于您希望程序执行的操作的要求。使用Range.Find 方法可以正常工作,创建Dictionary 并使用它进行快速查找以及其他技术也是如此。每个开发人员都会以他们自己的“最佳方式”稍微不同地解决它。如果您发布您尝试过的代码并描述错误(以及错误发生在哪一行),我们可以为您提供帮助。

标签: excel vba duplicates find msgbox


【解决方案1】:

将一系列值传递给数组总是很有用的,这样可以更快地处理它们。我认为这是一个有用的开始,可以为您指明正确的方向。它需要稍微修改一下,比如你的计数器将从 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

【讨论】:

    猜你喜欢
    • 2017-10-28
    • 2014-05-08
    • 2012-01-10
    • 2011-04-26
    • 1970-01-01
    • 2016-06-18
    • 2018-04-02
    • 2020-05-16
    • 1970-01-01
    相关资源
    最近更新 更多