Firstly your a genuis, nice one mate works like a treat.
one problem, the filter is always place on the row below the header and hence filters that first result to be deleted as well.
I have a macro which runs though column a:iv and uses the headers for the named ranges. when I run your filter instead of using row where the headers are it uses row 2
Dim oneCell As Range
Dim Lastrow As Long
Lastrow = Cells(Rows.Count, "A").End(xlUp).Row
For Each oneCell In ThisWorkbook.Sheets("O_BCDU").Range("A1:V1")
With oneCell
If CStr(.Value) <> vbNullString Then
.Offset(1, 0).Resize(Lastrow - 1, 1).Name = CStr(.Value)
End If
End With
Next oneCell
its only 1 result lost but it would be good if i didnt loose it,