Try this and let me know
Sub Filter_Split()
Dim wbDest As Workbook, mystring As String, mycol As String, mycolnr1 As Integer, mycolnr2 As Integer, ws As Worksheet
Set ws = Sheets("Sheet1")
ws.Range("A1").CurrentRegion.Copy
Application.ScreenUpdating = False
With Sheets.Add
.Name = "Temp"
.PasteSpecial xlPasteColumnWidths
With ActiveSheet.PageSetup
.PrintTitleRows = ""
.PrintTitleColumns = ""
.LeftMargin = Application.InchesToPoints(0.2)
.RightMargin = Application.InchesToPoints(0.2)
.TopMargin = Application.InchesToPoints(0.5)
.BottomMargin = Application.InchesToPoints(0.5)
.HeaderMargin = Application.InchesToPoints(0.2)
.FooterMargin = Application.InchesToPoints(0.2)
.PaperSize = xlPaperA4
.Orientation = xlLandscape 'xlPortrait
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = 1
'.PrintTitleRows = "$1:$6"
'.PrintArea = "$A$1:$K$57"
.LeftFooter = "&""Cambria,Regular""&11Fahad Insaf-Distribution Department"
.CenterFooter = "&""Cambria,Regular""&11PharmEvo (Pvt.) LTD."
'.RightFooter = "&""Cambria,Regular""&11Page &P of &N"
.CenterHorizontally = True
.CenterVertically = False
End With
End With
arr = ws.Range("A1").CurrentRegion
ReDim sn(1 To UBound(arr), 1 To UBound(arr, 2))
mycol = InputBox("Witch Column for Creation of files ?")
mycol2 = InputBox("Witch Column for Sorting ?")
mycolnr2 = ws.Range(mycol2 & "1").Column
mycolnr1 = ws.Range(mycol & "1").Column
For x = 2 To UBound(arr)
If InStr(1, mystring, arr(x, mycolnr1)) = 0 Then
ws.Range("A1").CurrentRegion.AutoFilter mycolnr1, Criteria1:=arr(x, mycolnr1)
mystring = mystring & " " & arr(x, mycolnr1)
ws.Range("A1").CurrentRegion.SpecialCells(12).Copy Sheets("Temp").Range("A1")
Sheets("Temp").Range("A1").CurrentRegion.Sort Key1:=Range(mycol2 & "1"), Order1:=xlDescending, Header:=xlGuess, OrderCustom:=1, _
MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal
Sheets("Temp").Copy
ActiveSheet.Name = arr(x, mycolnr1)
ActiveSheet.ListObjects.Add(xlSrcRange, Range("A1").CurrentRegion, , xlYes).Name = "Tabel1"
Range("E" & Rows.Count).End(xlUp).Offset(2).FormulaR1C1 = "=SUM(Tabel1[B. Assigned to MS])"
Range("D" & Rows.Count).End(xlUp).Offset(2) = "Total"
ActiveWorkbook.SaveAs ThisWorkbook.Path & Application.PathSeparator & arr(x, mycolnr1)
ActiveWorkbook.Close
ws.Range("A1").CurrentRegion.AutoFilter
Sheets("Temp").Range("A1").CurrentRegion.Clear
End If
Next
Application.DisplayAlerts = False
Sheets("Temp").Delete
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
Kind regards
Leo
Bookmarks