excel 如何循环浏览工作表并根据某些列值检测重复行?

ddrv8njm  于 2023-01-31  发布在  其他
关注(0)|答案(1)|浏览(114)

我正在编写一个宏,它将在工作表中循环,以检测产品日志中的重复行。我需要它来查看UPC(A列)、到期日(E列)和位置(H列)。
第一个循环从2运行到LastRow,它是srcSheet.Cells(Rows.Count, "A").End(xlUp).Row的值。我给变量赋值范围A/E/H:x,然后第二个循环从LastRow运行到3,步长为-1。
我遇到的问题是,当我使用And或嵌套的If/Then添加第二个条件时,每一行都将匹配。我让MsgBox输出一条消息,并向我显示xy的值。
如果我只检查一对值,如chkUPCsrcUPC,我会看到一切正常。当我添加第二个条件chkExpDate = srcExpDate时,它会发现每一行都是重复的,当我输出xy的值时,它们会匹配,因此,而不是在第一次运行时比较第2行和第1950行。它将把行3与自身进行比较。
下面是代码:

srcLastRow = srcSheet.Cells(Rows.Count, "A").End(xlUp).Row
    
    For x = 2 To srcLastRow
        srcUPC = srcSheet.Range("A" & x).Value
        srcExpDate = srcSheet.Range("E" & x).Value
        srcQty = srcSheet.Range("G" & x).Value
        srcLocation = srcSheet.Range("H" & x).Value
        
        For y = srcLastRow To 3 Step -1
            
            chkUPC = srcSheet.Range("A" & y).Value
            chkExpDate = srcSheet.Range("E" & y).Value
            chkQty = srcSheet.Range("G" & y).Value
            chkLocation = srcSheet.Range("H" & y).Value
            
            If chkUPC = srcUPC And chkExpDate = srcExpDate Then
                    MsgBox "The same product has been found on multiple lines" & vbCrLf & x & " | " & y
            End If

        Next y
    Next x
lyr7nygr

lyr7nygr1#

你换吧

For y = srcLastRow To 3 Step -1

For y = srcLastRow To x+1 Step -1

否则它将把除第二行之外的每一行与它自己进行比较。

相关问题