Excel 检查是否有重复项
我想检查列中的重复项,我的代码可以这样做。但当它在L列中找到一个重复项时,我希望它在c列中的整数上加上“+1”。所以如果“L5和L6”是相同的,我希望“C5”是“C5+1”。但我一直不知道如何做到这一点Excel 检查是否有重复项,excel,vba,Excel,Vba,我想检查列中的重复项,我的代码可以这样做。但当它在L列中找到一个重复项时,我希望它在c列中的整数上加上“+1”。所以如果“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
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
您可以通过将
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
将
范围(“C”&x).公式=“=左(x)+1”
替换为范围(“C”&x)=范围(“C”&x)+1
。在C5=C5+1中建立公式将是循环的,并将导致错误。或者,设置一个等于范围C5的变量,加1,然后将范围C5设置为该变量。我假设C列是一组整数,而不是公式。这应该可以解决您的问题:
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
非常感谢。但是,如果C是“5p”,我只想计算左边的数值,那么如何将左边的数值添加到范围值中?@jumbli-我编辑的答案现在完全解决了您的问题,AFAICS。谢谢!但是,如果C是“5p”,我只想计算左边的数值,那么如何将左边的数值加到范围值中呢?@jumbli刚刚把
range(“C”&x)=LEFT(range(“C”&x),1)+1&Mid(range(“C”&x),2)