Option Explicit
Sub Filter_Stuff()
Dim ws As Worksheet, ws1 As Worksheet, ws2 As Worksheet
Dim LR As Long
Dim cel As Range, Rng As Range
Application.ScreenUpdating = False
If Not Evaluate("ISREF(Lists!A1)") Then
Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = "Lists"
Else
Sheets("Lists").Cells.Clear
End If
Set ws = Sheets("FW15")
Set ws1 = Sheets("Lists")
Set ws2 = Sheets("CopiedResults")
With ws2
.UsedRange.Offset(1, 0).Clear
End With
With ws
LR = .Cells.Find("*", .Cells(.Rows.Count, .Columns.Count), SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row
.Range("A3:A" & LR).AdvancedFilter Action:=xlFilterCopy, _
CopyToRange:=ws1.Range("A1"), Unique:=True
ActiveWorkbook.Names.Add Name:="AAA", RefersTo:= _
"=OFFSET(Lists!$A$2,0,0,(COUNTA(Lists!$A:$A)-1),1)"
ws1.Range("AAA").Sort Key1:=ws1.Range("A2"), Order1:=xlAscending, _
Header:=xlNo, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
ws1.Range("AAA").Copy ws2.Range("A2")
.Range("B3:B" & LR).AdvancedFilter Action:=xlFilterCopy, _
CopyToRange:=ws1.Range("B1"), Unique:=True
ActiveWorkbook.Names.Add Name:="BBB", RefersTo:= _
"=OFFSET(Lists!$B$2,0,0,(COUNTA(Lists!$B:$B)-1),1)"
ws1.Range("BBB").Sort Key1:=ws1.Range("B2"), Order1:=xlAscending, _
Header:=xlNo, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
ws1.Range("BBB").Copy ws2.Range("C2")
.Range("C3:C" & LR).AdvancedFilter Action:=xlFilterCopy, _
CopyToRange:=ws1.Range("C1"), Unique:=True
ActiveWorkbook.Names.Add Name:="CCC", RefersTo:= _
"=OFFSET(Lists!$C$2,0,0,(COUNTA(Lists!$C:$C)-1),1)"
ws1.Range("CCC").Sort Key1:=ws1.Range("C2"), Order1:=xlAscending, _
Header:=xlNo, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
ws1.Range("CCC").Copy ws2.Range("E2")
If Not .AutoFilterMode Then
.Rows("3:3").AutoFilter
End If
Set Rng = ws2.Range(("A2"), ws2.Range("A2").End(xlDown))
For Each cel In Rng
.Range("A3:A" & LR).AutoFilter field:=1, Criteria1:=cel.Value
ws2.Range(cel.Address).Offset(0, 1).Value = .Range("F2").Text
Next cel
.AutoFilterMode = False
Set Rng = ws2.Range(("C2"), ws2.Range("C2").End(xlDown))
For Each cel In Rng
.Range("B3:B" & LR).AutoFilter field:=1, Criteria1:=cel.Value
ws2.Range(cel.Address).Offset(0, 1).Value = .Range("F2").Text
Next cel
.AutoFilterMode = False
Set Rng = ws2.Range(("E2"), ws2.Range("E2").End(xlDown))
For Each cel In Rng
.Range("C3:C" & LR).AutoFilter field:=1, Criteria1:=cel.Value
ws2.Range(cel.Address).Offset(0, 1).Value = .Range("F2").Text
Next cel
.AutoFilterMode = False
End With
Application.DisplayAlerts = False
Sheets("Lists").Delete
Application.DisplayAlerts = True
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub
Bookmarks