Option Explicit
Sub MarkDups()
Dim r As Long, N As Long
Dim K As String
'Dim's a Collection object - check online help
Dim C As Collection
'Instantiates (sort of like 'creates')
Set C = New Collection
'use With ... End With for an object saves typing, but also make the logic more visible
With ActiveSheet
'goes from row 2 to the number of rows in the block surrounding A1 = .Cells(1,1)
For r = 2 To .Cells(1, 1).CurrentRegion.Rows.Count
'formats a 'Key' equals to Cell in col 5 + a # + the cell in col 8 since it's the combination of 5+8 that defines a duplicate
K = .Cells(r, 5).Value & "#" & .Cells(r, 8).Value
'if there's an error ignore it - would occur if a Collection entry with the key K already exists
On Error Resume Next
'if K exists in collection, it can't be added
'if K does NOT exist, then add it with a data value = 0
C.Add 0, K
'turn off the Ignore Errors
On Error GoTo 0
'get the data value from the collection item K, put it in N and add 1
N = C(K) + 1
'we know that there's a K since we either added it above or we retrieved it and added 1
'remove the old K and add a new one with data value = old value + 1
C.Remove (K)
C.Add N, K
Next r
'again, go from row 2 to the end of data
For r = 2 To .Cells(1, 1).CurrentRegion.Rows.Count
'construct a temp string (just for ease) = col 5 plus # plus col8
K = .Cells(r, 5).Value & "#" & .Cells(r, 8).Value
'if the data value for K = 1, put Single in col 11, otherwise put Duplicate in col11
.Cells(r, 11).Value = IIf(C(K) = 1, "Single", "Duplicate")
'get the next row
Next r
End With
End Sub