Excel 2013宏以按多个选定值进行筛选

时间:2014-06-28 12:54:07

标签: excel vba

我想实现一个执行以下操作的宏:

如果我选择属于同一列的一个或多个单元格并激活宏,则将过滤掉同一列中没有所选值之一的所有行。

予。例如,如果宏将在下表中激活:

Original Table

这将导致以下过滤表:

enter image description here

到目前为止,如果只选择了一个单元格,我可以设法实现一段可以正常工作的代码:

Range(ActiveCell.CurrentRegion.Address).AutoFilter Field:=ActiveCell.Column,Criteria1:=ActiveCell.Value

有人可以帮助我扩展该代码,使其不仅限于一个选定的单元格吗?

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:3)

试试这个:

Sub FilterMultipleCriteria()
    Dim filterRange As Range, filterValues() As Variant, cl As Range, i As Integer

    Set filterRange = Range("A1:C10") //Update the range as per your spreadsheet
    ReDim filterValues(Selection.Cells.Count - 1)
    i = 0

    For Each cl In Selection
        filterValues(i) = cl.Text
        i = i + 1
    Next cl

    filterRange.AutoFilter Field:=2, Criteria1:=filterValues, Operator:=xlFilterValues
End Sub

答案 1 :(得分:0)

感谢您的回复。根据你的帖子,我可以提出以下解决方案似乎工作正常:

Sub FilterMultipleCriteria()
    Dim filterValues() As Variant, cl As Range, i As Integer
    ReDim filterValues(Selection.Cells.Count - 1)
    i = 0
    For Each cl In Selection
        filterValues(i) = cl.Text
        i = i + 1
    Next cl
    Range(ActiveCell.CurrentRegion.Address).AutoFilter Field:=ActiveCell.Column, 
    Criteria1:=filterValues, Operator:=xlFilterValues
End Sub