Excel VBA(重复/增量)

我很新vba,并试图写一段代码,将在列中find重复,然后重新命名相应的重复,search示例代码,但找不到任何合适的! 🙁

任何人都可以帮忙吗?

列示例数据…

SAPR1945/1 SAPR1945/1 SAPR1945/1 SAPR1945/1 SAPR1934/3 SAPR1934/3 SAPR1342/2 SAPR1342/2 

我需要它看起来像下面,如果重复被发现,那么重复的第一个单元格的最后一个字符被更改为1,该单元格的后续重复被递增…

 SAPR1945/1 SAPR1945/2 SAPR1945/3 SAPR1945/4 SAPR1934/1 SAPR1934/2 SAPR1342/1 SAPR1342/2 

希望有道理,有人可以帮忙?

感谢预期:)

代码首先遍历列A(从第一行开始),并将所有的数字都改变为1 。 然后它再次遍历列,如果发现重复,那么它增加了数字的计数器通过/符号。 我想很简单

 Option Explicit Sub Main() Dim ws As Worksheet Set ws = Sheets(1) Dim i&, j&, cnt&, tmp For i = 1 To ws.Range("A" & Rows.Count).End(xlUp).Row tmp = Split(ws.Range("A" & i).Value, "/") ws.Range("A" & i).Value = tmp(0) & "/" & "1" Next i For i = 1 To ws.Range("A" & Rows.Count).End(xlUp).Row For j = 1 To ws.Range("A" & Rows.Count).End(xlUp).Row If i <> j Then If ws.Range("A" & i).Value = ws.Range("A" & j).Value Then tmp = Split(ws.Range("A" & i).Value, "/") cnt = tmp(1) + 1 ws.Range("A" & j).Value = tmp(0) & "/" & cnt End If End If Next j cnt = 0 Next i End Sub 

您可以使用相同的技术使用或不使用代码。 下面的代码方法避免了循环。

如果你的数据在A1:A10那么:

手册

  • B1 put =LEFT(A1,FIND("/",A1)) & COUNTIF($A$1:A1,A1)复制到B10
  • 如有必要,将结果复制并粘贴到A

 Sub QuickDupes() Dim rng1 As Range Set rng1 = Range([a1], Cells(Rows.Count, "A").End(xlUp)) With rng1 .Offset(0, 1).Insert .Offset(0, 1).FormulaR1C1 = "=LEFT(RC[-1],FIND(""/"",RC[-1])) & COUNTIF(R1C1:RC[-1],RC[-1])" .Value = .Offset(0, 1).Value .Offset(0, 1).Delete End With End Sub