Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 检查是否有重复项_Excel_Vba - Fatal编程技术网

Excel 检查是否有重复项

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

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