Excel 循环遍历列的重复单元格,并放置一个-“数字”;之后
我有一个巨大的电子表格,其中一列应该有一个唯一的标识符。但问题是我的客户不理解“独特性”要求的重要性 所以我只是不想手动浏览7000行并重命名它们。我知道如何循环,我知道如何突出显示重复的单元格,但我不知道如何循环重复的单元格并在其后面放置计数器,因此如果我有:Excel 循环遍历列的重复单元格,并放置一个-“数字”;之后,excel,vba,excel-formula,Excel,Vba,Excel Formula,我有一个巨大的电子表格,其中一列应该有一个唯一的标识符。但问题是我的客户不理解“独特性”要求的重要性 所以我只是不想手动浏览7000行并重命名它们。我知道如何循环,我知道如何突出显示重复的单元格,但我不知道如何循环重复的单元格并在其后面放置计数器,因此如果我有: duplicate duplicate duplicate 它将使: duplicate-1 duplicate-2 duplicate-3 如何执行此操作?无需借助VBA即可执行此操作。假设A列是客户名称的半唯一列(即,有时客户出
duplicate
duplicate
duplicate
它将使:
duplicate-1
duplicate-2
duplicate-3
如何执行此操作?无需借助VBA即可执行此操作。假设A列是客户名称的半唯一列(即,有时客户出现多次,在这种情况下,您需要区分这些记录)。使用此计算并填写表格的长度:
=MATCH(A2,A:A,)
=IF(B2=ROW(),1,C1+1)
=A2&“-”&C2
CustName First Counter Unique
A 2 1 A-1
B 3 1 B-1
C 4 1 C-1
C 4 2 C-2
D 6 1 D-1
E 7 1 E-1
E 7 2 E-2
E 7 3 E-3
F 10 1 F-1
如果希望继续使用VBA,可以使用Windows脚本运行时中的帮助 首先,设置对Windows脚本运行时的引用: 然后,执行如下代码:
Option Explicit
Sub test()
Dim uniqueCounter As New Scripting.Dictionary
Dim counter As Long
Dim rowCount As Long
Dim identifer As String
rowCount = 17 'Whatever code you want to put in to calculate the last row
For counter = 1 To rowCount
identifer = Sheet1.Cells(counter, 1) 'Put whatever number of combination of cells which the row unique here (maybe it's just the one)
If uniqueCounter.Exists(identifer) Then
uniqueCounter(identifer) = CLng(uniqueCounter(CStr(Sheet1.Cells(counter, 1)))) + 1
Sheet1.Cells(counter, 2) = "Duplicate #" & uniqueCounter(CStr(Sheet1.Cells(counter, 1)))
Else
uniqueCounter.Add identifer, "0"
Sheet1.Cells(counter, 2) = "Original"
End If
Next counter
End Sub
上述代码将处理以下数据:
1
2
3
1
1
1
3
2
1
1
2
3
12
15
3
4
15
并在b栏填写原件和副本,如下所示:
1 Original
2 Original
3 Original
1 Duplicate #1
1 Duplicate #2
1 Duplicate #3
3 Duplicate #1
2 Duplicate #1
1 Duplicate #4
1 Duplicate #5
2 Duplicate #2
3 Duplicate #2
12 Original
15 Original
3 Duplicate #3
4 Original
15 Duplicate #1
一个不考虑顺序的单列公式是复制下来的公式(对于从A1开始的数据)
=A1&“-”和COUNTIF($A$1:A1,A1)
我测试了这个,当我计算出
$
位置后,它就如广告所说的那样工作了。顺序不重要,仍然不需要VBA,而且我的建议更简单。