Если вы хотите придерживаться VBA, вы можете использовать Словарь объекта в Windows Scripting Runtime, чтобы помочь вам.
Сначала установите ссылку на время выполнения сценариев 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