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