원하는 것을 얻기 위해 자동 필터를 사용하는 간단한 방법은 없습니다. 당신은 사용할 수 없습니다 Criteria1:="<>MyArray"
대체
- 우리는 우리가 원하지 않는 값 알고. 관련 열의 값이 무엇인지 알 수 있습니다.
- 해당 열의 값을 배열에 저장 한 다음 원하지 않는 값을 가진 배열과 비교하여 불필요한 값을 제거하기 만하면됩니다.
- 어레이에서 빈 셀을 제거하십시오.
- 마지막 어레이를 자동 필터로 전달하십시오. 액션에서
은의 우리의 워크 시트는 아래 그림과 같이 보이는 가정 해 봅시다. 나는 단지 15 행의 예를 들고있다.
코드
Sub Sample()
Dim ws As Worksheet
Dim MyAr(1 To 5) As String
Dim tmpAr As Variant, ArFinal() As String
Dim LRow As Long
ReDim ArFinal(0 To 0)
Set ws = ActiveSheet
'~~> Creating an array of values which we do not want
For i = 1 To 5
MyAr(i) = i
Next i
With ws
'~~> Last Row of Col C sice you will filter on 3rd column
LRow = .Range("C" & .Rows.Count).End(xlUp).Row
'~~> Storing the values form C in the array
tmpAr = .Range("C2:C" & LRow).Value
'~~> Compare and remove values which we do not want
For i = 1 To LRow - 1
For j = 1 To UBound(MyAr)
If tmpAr(i, 1) = MyAr(j) Then tmpAr(i, 1) = ""
Next j
Next i
'~~> Remove blank cells from the array by copying them to a new array
For i = LBound(tmpAr) To UBound(tmpAr)
If tmpAr(i, 1) <> "" Then
ArFinal(UBound(ArFinal)) = tmpAr(i, 1)
ReDim Preserve ArFinal(0 To UBound(ArFinal) + 1)
End If
Next i
'~~> Filter on values which you want. Change range as applicable
.Range("$A$1:$H$15").AutoFilter Field:=3, Criteria1:=ArFinal, Operator:=xlFilterValues
End With
End Sub
출력
ActiveSheet.Range'처럼 배열에 직접 기준을 설정하십시오 ("$ A $ 1 : $ H $ 251 "). 자동 필터 필드 : = 3, Criteria1 : = CPM1Array, 연산자 : = xlFilterValues' 그리고 배열의 값을 필터링합니다. – Mikegrann