Excel VBA根据范围进行过滤

时间:2015-06-08 17:16:54

标签: excel vba excel-vba

所有

我试图根据从另一张纸张输入的一系列数据来过滤工作表上的项目。我当前的宏仅根据该范围内的第一个单元格进行过滤。

我希望根据其过滤的范围每天都会改变。有些日子它可能是3个项目,有时可能是7个。所以我无法让过滤器查看4个特定单元格。

以下是我目前所拥有的内容,我不确定为什么它不是基于所有4个单元格进行过滤,而是仅基于该范围内的第一个单元格进行过滤。

Dim POinput As Range, cell As Range
Dim lrow As Integer
Dim arrList() As String, lngcnt As Long

With Sheets("Control")
    lrow = Range("A50").End(xlUp).Row
    Set POinput = .Range("A5:A" & lrow)
End With

lngcnt = 0
For Each cell In POinput
    ReDim Preserve arrList(lngcnt)
    arrList(lngcnt) = cell.Text
    lngcnt = lngcnt + 1
Next


Sheets("ACTOpenItems").Select
    ActiveSheet.Range("A1:FH" & lastrow).AutoFilter Field:=2, Criteria1:=arrList, _
                                                    Operator:=xlFilterValues

例如,假设我已在" Control"中输入了数据。选项卡1和3,因为这些是我要在" ACTOpenItems"的B列中过滤的项目。标签

ACTOpenItems标签看起来像这样。

类型/帐户/金额

狗/ 1/100

Cat / 2/150

Bird / 3/200

狗/ 4/250

Cat / 1/300

Bird / 2/350

Dog / 3/400

Cat / 4/450

Bird / 1/500

Dog / 2/550

Cat / 3/600

Bird / 4/650

我想要的结果。

类型/帐户/金额

狗/ 1/100

Bird / 3/200

Cat / 1/300

Dog / 3/400

Bird / 1/500

Cat / 3/600

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我发现了错误。在代码中犯了一个小错误。应该有一个“。”在我的范围之前。现在修好了。只是想发布更新以防任何人想要做同样的事情。

这个

With Sheets("Control")
    lrow = Range("A50").End(xlUp).Row

应该是这个

With Sheets("Control")
    lrow = .Range("A50").End(xlUp).Row