根据在另一个工作簿中找到的数据过滤工作簿列

时间:2020-05-10 20:26:27

标签: excel vba filter

我有两本工作簿,我试图根据“ Wbk1”的C列中的数据过滤“ Wbk2” A列。我正在尝试匹配“ Wbk1” C列中的几百个单元格通过“ Wbk2”列A进行过滤,并基于此进行过滤。

设置为单个单元格时,它可以正常工作。我正在尝试将整个列添加为过滤器,但似乎无法根据该条件对其进行过滤。

sub filter()

Dim Wbk1 As Workbook
Dim Wbk2 As Worksheet
Dim Wksht As Worksheet
Dim Filter As Range


Set Wbk1 = Workbooks(“DataToUseForFiltering.xlsm”)
Set Wksht = Wbk1.Worksheets(“Sheet1”)
Set Wbk2 = ActiveSheet

With Wksht
 Set Filter = .Range(“C2”)
End With

With Wbk2
 With .Range("A1:Z1" & Cells(.Rows.Count, "A").End(xlUp).Row)
 .AutoFilter
 .AutoFilter Field:=1, Criterial:=Filter
 End With
End With

End Sub

1 个答案:

答案 0 :(得分:0)

代码以我之前的评论为基础,并且已经过测试。

Option Explicit

Sub NewFilter()

    Dim Wbk1 As Workbook
    Dim Wksht1 As Worksheet
    Dim Wksht2 As Worksheet
    Dim rngFilter As Range
    Dim aryFilter()
    Dim i As Long

    Set Wbk1 = Workbooks("DataToUseForFiltering.xlsm")
    Set Wksht1 = Wbk1.Worksheets("Sheet1")
    Set Wksht2 = ActiveSheet

    With Wksht1
        Set rngFilter = .Range("C2:C" & .UsedRange.Rows.Count)
    End With

    ReDim aryFilter(1 To rngFilter.Cells.Count)

    For i = 1 To rngFilter.Cells.Count
        aryFilter(i) = rngFilter.Cells(i).Value
    Next i

    Wksht2.Rows(1).AutoFilter _
        Field:=1, _
        Criteria1:=aryFilter, _
        Operator:=xlFilterValues

End Sub
相关问题