I\'ve got two Excel sheets where one sheets consists of a list of users. And the other list contains the same data, only the same user is listed several times. Now, I need s
This time, you could use a collection.
Here is a try based on your previous file:
Option Explicit
Sub test()
Dim i As Long
Dim arrSum As Variant, arrUsers As Variant
Dim cUnique As New Collection
'Put the name range from "Summary" in an array
With ThisWorkbook.Sheets("Summary")
arrSum = .Range("A2", .Range("A" & Rows.Count).End(xlUp))
End With
'"Convert" the array to a collection (unique items)
For i = 1 To UBound(arrSum, 1)
On Error Resume Next
cUnique.Add arrSum(i, 1), CStr(arrSum(i, 1))
Next i
'Get the users array
With ThisWorkbook.Sheets("Users")
arrUsers = .Range("A2", .Range("A" & Rows.Count).End(xlUp))
End With
'Check if the value exists in the Users sheet
For i = 1 To cUnique.Count
'if can't find the value in the users range, delete the rows
If Application.WorksheetFunction.VLookup(cUnique(i), arrUsers, 1, False) = "#N/A" Then
With ThisWorkbook.Sheets("Summary").Cells
.AutoFilter Field:=1, Criteria1:=cUnique(i)
.Range("A2", .Range("A" & Rows.Count).End(xlUp)).EntireRow.Delete
End With
End If
Next i
'removes AutoFilter if one remains
ThisWorkbook.Sheets("Summary").AutoFilterMode = False
End Sub