В настоящее время у меня есть код для фильтрации для определенных предметов в 3 колонках. Есть ли ограничение на автофильтр, которое позволяет фильтровать только 2 столбца? как только я добавлю фильтр 3-го столбца, я получаю ошибку «Autofilter method of range class failed». если есть ограничение, есть ли способы обхода?Автофильтр с 3 колонками
Public Sub autofilterOffical()
Dim ws As Worksheet
Dim wsOut As Worksheet
Dim a As String
Dim b As String
Dim c As String
Dim d As String
Dim e As String
Dim f As String
Dim g As String
Dim h As String
Dim i As String
Dim j As String
Dim k As String
Dim l As String
Dim m As String
Set ws = Worksheets("Data")
AutoFilterMode = False
a = ws.Range("bq6")
b = ws.Range("bq7")
c = ws.Range("bq8")
d = ws.Range("bq9")
e = ws.Range("bq10")
f = ws.Range("bq11")
g = ws.Range("bq12")
h = ws.Range("bq13")
i = ws.Range("bq14")
j = ws.Range("bq15")
k = ws.Range("bq16")
l = ws.Range("bq17")
m = ws.Range("bq18")
If ws.Range("br18") = "1" Then
ws.Range("A:Bn").autofilter field:=66, Criteria1:=Array(m), _
Operator:=xlFilterValues
Else
End If
If ws.Range("br6") = "1" Then
ws.Range("a:bn").autofilter field:=64, Criteria1:=Array(a), _
Operator:=xlFilterValues
ElseIf ws.Range("br6") = "2" Then
ws.Range("a:bn").autofilter field:=64, Criteria1:=Array(a, b), _
Operator:=xlFilterValues
ElseIf ws.Range("br6") = "3" Then
ws.Range("a:bn").autofilter field:=64, Criteria1:=Array(a, b, c), _
Operator:=xlFilterValues
ElseIf ws.Range("br6") = "4" Then
ws.Range("a:bn").autofilter field:=64, Criteria1:=Array(a, b, c, d), _
Operator:=xlFilterValues
ElseIf ws.Range("br6") = "5" Then
ws.Range("a:bn").autofilter field:=64, Criteria1:=Array(a, b, c, d, e), _
Operator:=xlFilterValues
ElseIf ws.Range("br6") = "6" Then
ws.Range("a:bn").autofilter field:=64, Criteria1:=Array(a, b, c, d, e, f), _
Operator:=xlFilterValues
ElseIf ws.Range("br6") = "7" Then
ws.Range("a:bn").autofilter field:=64, Criteria1:=Array(a, b, c, d, e, f, g), _
Operator:=xlFilterValues
ElseIf ws.Range("br6") = "8" Then
ws.Range("a:bn").autofilter field:=64, Criteria1:=Array(a, b, c, d, e, f, g, h), _
Operator:=xlFilterValues
ElseIf ws.Range("br6") = "9" Then
ws.Range("a:bn").autofilter field:=64, Criteria1:=Array(a, b, c, d, e, f, g, h, i), _
Operator:=xlFilterValues
ElseIf ws.Range("br6") = "0" Then
Else
End If
If ws.Range("br15") = "1" Then
ws.Range("a:bn").autofilter field:=63, Criteria1:=Array(j), _
Operator:=xlFilterValues
ElseIf ws.Range("br15") = "2" Then
ws.Range("a:bn").autofilter field:=63, Criteria1:=Array(j, k), _
Operator:=xlFilterValues
ElseIf ws.Range("br15") = "3" Then
ws.Range("a:bn").autofilter field:=63, Criteria1:=Array(j, k, l), _
Operator:=xlFilterValues
Else
End If
Call copy
End Sub
Спасибо за помощь. Я изменил свой код и по-прежнему получает ту же ошибку в той же части, в поле фильтра для 66 – Daruki
. Смотрите OP для обновленного кода – Daruki
Nevermind, я забыл очистить фильтр. Благодаря! все работает! ваше объяснение было очень хорошим! – Daruki