Александр, может быть, я смогу помочь вашему делу.
Исходя из моего понимания вашей проблемы и желаемого эффекта, действительно ли необходимо использовать фильтр? Если вы используете его только для того, чтобы иметь возможность удалить все пустые строки в определенном столбце, тогда достаточно простого цикла с функцией If
.
Пожалуйста, смотрите мой предложенный код ниже:
Sub delete_blank_rows()
Dim lastRow As Long
Dim cel As Range
lastRow = ThisWorkbook.Worksheets("RH").Cells(Rows.Count, 1).End(xlUp).Row
'loop through every cell in column C until the last row (lastRow is taken from column A)
For Each cel In ThisWorkbook.Worksheets("RH").Range("C1:C" & lastRow)
'function that evaluates if cell in column C is blank/#N/A and deletes it if yes
If cel.Value = "" Or cel.Value = "#N/A" Then
cel.EntireRow.Delete
End If
Next cel
End Sub
Это сработало безошибочно на моих данных выборки. Пожалуйста, имейте в виду, что заголовки находятся в самой первой строке в моих выборочных данных - .Range("C1:C" & lastRow)
Надеюсь, это решит вашу проблему.