Good of you to post the final solution to your problem!
Looking at the macro perhaps one could say that since you almost at the start activate sheet1 you don't need to refer to this sheet i.e.
Sht1.Range("E1").Value = "Rough Panel Length"
just writing
Range("E1").Value = "Rough Panel Length"
will work just as well
The line
Sht1.Range("B1:B10000").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range( _
'"E1"), Unique:=True
could be written as
Range("B1", Range("B" & Rows.Count).End(xlUp)).AdvancedFilter xlFilterCopy, , Range("E1"), True
as this will find the last used row in column B instead of setting a high number to ensure that the B column is cleared.
Sht1.Range("E:XFD").ClearContents
could be written as
Sht1.UsedRange.Offset(, 4).ClearContents
where the offset command starts clearing the used range starting from the 5th column and here I use Sht1 as this is easier to write than "ActiveSheet.UsedRange".
So really no improvement of your present code just showing different way of writing some parts of it.
Alf
Bookmarks