我想检查列中的重复项,我的代码可以这样做。但是当它在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
答案 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