我想实现一个执行以下操作的宏:
如果我选择属于同一列的一个或多个单元格并激活宏,则将过滤掉同一列中没有所选值之一的所有行。
予。例如,如果宏将在下表中激活:
这将导致以下过滤表:
到目前为止,如果只选择了一个单元格,我可以设法实现一段可以正常工作的代码:
Range(ActiveCell.CurrentRegion.Address).AutoFilter Field:=ActiveCell.Column,Criteria1:=ActiveCell.Value
有人可以帮助我扩展该代码,使其不仅限于一个选定的单元格吗?
非常感谢任何帮助!
答案 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