Excel VBA - 如何在列中搜索重复值并附加_count

时间:2017-01-17 06:35:31

标签: excel vba excel-vba

我的列的值为-INC0001,INC0002等。我需要找到重复的值,并在不使用2 For循环的情况下将_count附加到它们。
对于前者用于跟踪数据 -
INC001
INC002
INC003
INC001
INC002
INC001
输出应为
INC001
INC002
INC003
INC001_1
INC002_1
INC001_2

我使用2 for循环完成了它,但大约15000条记录大约需要15-20分钟。在excel宏中更有效的方法吗?
现有代码

    Sub AppendMacro()
    Worksheets("Sheet1").Activate
    Dim lngMaxRow As Long
    lngMaxRow = Range("A" & Rows.count).End(xlUp).Row
    Dim count As Integer
    For i = 2 To lngMaxRow - 1 Step 1
    Dim incNum As String
    incNum = ActiveSheet.Range("A" & i).Value
    count = 1
    If (Len(incNum) = 11) Then
        For j = i + 1 To lngMaxRow Step 1
        If (incNum = ActiveSheet.Range("A" & j).Value) Then
            ActiveSheet.Range("A" & j).Value = ActiveSheet.Range("A" & j).Value & "_" & count
            count = count + 1
        End If
        Next
    End If
    Next
End Sub

1 个答案:

答案 0 :(得分:2)

你可以这样:

Sub AppendMacro()
    Dim cell As Range
    With Worksheets("Sheet1")
        With .Range("A1", .Cells(.Rows.count, 1).End(xlUp))
            For Each cell In .Cells
                cell.Value = cell.Value & "_" & WorksheetFunction.CountIf(.Parent.Range(.Cells(1), cell), cell.Value & "_*")
            Next
            .Replace what:="_0", replacement:="", lookat:=xlPart
        End With
    End With
End Sub