我有两本工作簿,我试图根据“ 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
答案 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