【问题标题】:Where is the error in my VBA code that read duplicates?我的 VBA 代码中读取重复项的错误在哪里?
【发布时间】:2016-03-12 02:59:03
【问题描述】:

我有一个 Excel 文件。在 B 列第 11 行是我的产品编号范围,最多 100 行。代码应该在B列中找到重复值。我的代码是这样的:

Dim tgtWB As Workbook
Dim tgtWS As Worksheet
Dim LstRow As Long

LstRow = range("B" & Rows.count).End(xlUp).Row

r = 11
   For i = 11 To LstRow
       Do until tgWS.Range("B" & i) = "0"
        If tgtWS.Range("B" & i) = tgtWS.Range("B" & i+1) Then
          msgbox " Duplicate/s found! " & vbCrLf & tgtWS.Range("B" &i).value
          exit sub
        else
            r = r+1
        end if
       Loop
       Next

我刚刚插入了Do until,因为程序会停止读取 如果 B 列中的值为空白或零 (0),则重复值。和 该代码仅比较 B 列的第 11 行和第 12 行。

我做错了什么?

【问题讨论】:

标签: excel vba macros


【解决方案1】:

请检查它是否可以适应您的需求:

Sub John()
    Dim tgtWS As Worksheet
    Dim LstRow As Long

    Set tgtWS = ActiveSheet
    LstRow = Range("B" & Rows.Count).End(xlUp).Row

    For i = 11 To LstRow
        If tgtWS.Range("B" & i) = "0" Then Exit Sub
        If tgtWS.Range("B" & i) = tgtWS.Range("B" & i + 1) Then
            MsgBox " Duplicate/s found! " & vbCrLf & tgtWS.Range("B" & i).Value
            Exit Sub
        End If
    Next i
End Sub

它将找到第一组重复项(如果它们是连续的记录)
如果重复项不连续,则需要一个双循环

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-01
    • 2020-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多