Sub Create_list()
Dim wsSource As Worksheet
Dim wsOutput As Worksheet
Dim objMyUniqueData As Object
Dim lngLastRow As Long
Dim rngMyCell As Range
Set wsSource = Sheets("Master") 'Sheet name with raw data.
Set wsOutput = Sheets("Current") 'Sheet name to output unique list.
Application.ScreenUpdating = False
Set objMyUniqueData = CreateObject("Scripting.Dictionary")
lngLastRow = wsSource.Range("A:A").Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
For Each rngMyCell In wsSource.Range("C5:C" & lngLastRow)
If Len(rngMyCell.Offset(0, 17)) = 0 Then
If objMyUniqueData.exists(CStr(rngMyCell) & rngMyCell.Offset(0, 5)) = False Then
objMyUniqueData.Add CStr(rngMyCell) & rngMyCell.Offset(0, 5) & rngMyCell.Offset(0, 2), Array(CStr(rngMyCell), CStr(rngMyCell.Offset(0, 5)), CStr(rngMyCell.Offset(0, 2)), CStr(rngMyCell) & rngMyCell.Offset(0, 5) & rngMyCell.Offset(0, 2))
End If
End If
Next rngMyCell
wsOutput.Range("A4:C" & objMyUniqueData.Count + 3) = WorksheetFunction.Transpose(WorksheetFunction.Transpose(objMyUniqueData.Items)) '3 added to account for header rows
Application.ScreenUpdating = True
'Sets Output Range
Dim rngOutput As Range
Dim rngOutputRowC As Range
Dim lngOutputLR As Long
lngOutputLR = wsOutput.Range("A:A").Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
Set rngOutput = wsOutput.Range("A4:C" & lngOutputLR)
Set rngOutputRowC = wsOutput.Range("C4:C" & lngOutputLR)
End Sub