检查重复总和

时间:2015-12-09 13:21:40

标签: excel excel-vba vba

我想检查列中的重复项,我的代码可以这样做。但是当它在L列中找到重复时,我希望它添加" + 1"到c列中的整数。所以如果" L5和L6"是一样的,我想" C5"成为" C5 + 1"。但我无法弄清楚如何做到这一点。

Sub check_duplicates()
    Dim x As Long
    Dim LastRow As Long

    LastRow = Range("L65536").End(xlUp).Row
    For x = LastRow To 1 Step -1
        If Application.WorksheetFunction.CountIf(Range("L2:L" & x), Range("L" & x).Value) > 1 Then
               Range("C" & x).Formula = "=LEFT(x) + 1"
        End If
    Next x

End Sub

3 个答案:

答案 0 :(得分:0)

您可以通过将Left函数(VBA版本)包装在单元格值周围来增加该值,以使值增加1,然后使用空格将值提取到右侧`" P"在你的例子中,然后将它们重新组合在一起。

请参阅下面的代码。它适用于数字增加到一位数以上的情况,并且还假设在数字之后和文本之前总是有空格。

Sub check_duplicates()

Dim x As Long
Dim LastRow As Long

LastRow = Range("L65536").End(xlUp).Row

For x = LastRow To 1 Step -1

    If Application.WorksheetFunction.CountIf(Range("L2:L" & x), Range("L" & x).Value) > 1 Then

           Dim y As Long, x As String
           'increment left number by 1
           y = Left(Range("C" & x).Value, InStr(1, Range("C" & x).Value, " ") - 1) + 1
           'extract text after space
           x = Mid(Range("C" & x).Value, InStr(1, Range("C" & x).Value, " "))

           Range("C" & x).Value = y & x ' bring together and set the cell value to new incremented value

    End If

Next x

End Sub

答案 1 :(得分:0)

Range("C" & x).Formula = "=LEFT(x) + 1"替换为Range("C" & x)=Range("C" & x) + 1之类的内容。使公式在C5 = C5 + 1中将是循环的并且将导致错误。或者,将变量设置为范围C5,将1加1,然后将范围C5设置为此变量。我假设列C是一组整数,而不是公式。

答案 2 :(得分:0)

那应该可以解决你的问题:

Sub check_duplicates()

Dim x As Long
Dim LastRow As Long

LastRow = Range("L65536").End(xlUp).Row
For x = LastRow To 1 Step -1
    If Application.WorksheetFunction.CountIf(Range("L2:L" & x), Range("L" & x).Value) > 1 Then
        Range("C" & x) = Left(Range("C" & x), 1) + 1 & Mid(Range("C" & x), 2)
    End If
Next x
End Sub