Excelmacros捕获选定的过滤条件

请你能帮忙拿取用户给出的标准来过滤excel中的数据,然后用macros中的附加额外的过滤条件。

我到现在为止已经完成了。 如何build立dynamic的标准,我喜欢,如果有多个条件,我们有任何function来捕捉标准,然后追加?

With Rng.Parent.AutoFilter If Intersect(Rng, .Range) Is Nothing Then GoTo Finish With .Filters(Rng.Column - .Range.Column + 1) If Not .On Then GoTo Finish Filter = .Criteria1 Filter = Filter & " OR " & Cells(4, 10) Select Case .Operator Case xlAnd Filter = Filter & " AND " & .Criteria2 Case xlOr Filter = Filter & " OR " & .Criteria2 End Select End With 

下面是一些简单的代码,让你开始在一些示例数据上使用带有VBA的.AutoFilter 。 请注意,您可以根据需要使用多个条件过滤数据,并且可以根据需要dynamic更改过滤条件。 通过代码的animationGIF显示。 r.select声明只是为了帮助你理解,一旦理解,应该删除。 过滤数据后,select一些过滤的数据并复制到另一张纸上。 当然,你会根据需要进行修改。

在这里输入图像说明

 Option Explicit Sub test() Dim sh1 As Worksheet, sh2 As Worksheet, r As Range, filteredRange As Range Dim chosenName As String Const idCol = 1, nameCol = 2, cityCol = 4, chosenCity = "Denver" chosenName = InputBox("What name to filter by?") Set sh1 = Worksheets("Sheet1") Set sh2 = Worksheets("Sheet2") Set r = sh1.Range("A1") sh1.Activate If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData r.AutoFilter field:=nameCol, Criteria1:="=" & chosenName r.AutoFilter field:=cityCol, Criteria1:="=" & chosenCity Set r = sh1.AutoFilter.Range.Columns(idCol) Set r = r.Offset(1, 0).Resize(r.Rows.Count - 1, 1) Set r = r.SpecialCells(xlVisible) r.Select r.Copy sh2.Activate sh2.Range("A1").Select sh2.Paste End Sub