Sub Parse_Data()
Dim Lr As Long
Dim Ws As Worksheet
Dim vCol As Integer
Dim I As Long
Dim iCol As Long
Dim myArr As Variant
Dim Temp As Variant
Dim Title As String
Dim titleRow As Integer
vCol = 3
Set Ws = Sheets("Sheet1")
Lr = Ws.Cells(Ws.Rows.Count, vCol).End(xlUp).Row
Title = "A1:I1"
titleRow = Ws.Range(Title).Cells(1).Row
iCol = Ws.Columns.Count
SpeedUp
Ws.Cells(1, iCol) = "Unique"
For I = 2 To Lr
On Error Resume Next
If VBA.Trim(Ws.Cells(I, vCol)) <> "" And Application.WorksheetFunction.Match(VBA.Trim(Ws.Cells(I, vCol)), Ws.Columns(iCol), 0) = 0 Then
Ws.Cells(Ws.Rows.Count, iCol).End(xlUp).Offset(1) = VBA.Trim(Ws.Cells(I, vCol))
End If
Next I
myArr = Application.WorksheetFunction.Transpose(Ws.Columns(iCol).SpecialCells(xlCellTypeConstants))
ReDim Temp(1 To UBound(myArr))
For I = 2 To UBound(myArr)
Temp(I) = "Output" & I - 1
Next I
Ws.Columns(iCol).Clear
For I = 2 To UBound(myArr)
Ws.Range(Title).AutoFilter Field:=vCol, Criteria1:=myArr(I) & ""
If Not Evaluate("=ISREF('" & Temp(I) & "'!A1)") Then
Sheets.Add(after:=Worksheets(Worksheets.Count)).Name = Temp(I) & ""
Else
Sheets(Temp(I) & "").Move after:=Worksheets(Worksheets.Count)
End If
Ws.Range("A" & titleRow & ":A" & Lr).EntireRow.Copy Sheets(Temp(I) & "").Range("A1")
Sheets(Temp(I) & "").Columns.AutoFit
Sheets(Temp(I) & "").DisplayRightToLeft = False
Next I
Ws.AutoFilterMode = False
Ws.Activate
SpeedDown
MsgBox "Done...", 64
End Sub
Function SpeedUp()
With Application
.Calculation = xlManual
.ScreenUpdating = False
.EnableEvents = False
End With
End Function
Function SpeedDown()
With Application
.Calculation = xlAutomatic
.ScreenUpdating = True
.EnableEvents = True
End With
End Function