【发布时间】:2015-05-14 14:16:13
【问题描述】:
我需要根据相同的条件进行过滤,但条件的值在我收到的数据中并不总是相同,因此它们需要是动态的。
例如。
将 crit1 调暗为字符串 暴击1 = ?
这样:
Selection.AutoFilter Field:=4, Criteria1:=crit1
这是我的代码
enter code herexDim TaskType, Status, Elapse As Long
Dim Total, Completed As Variant
Total = Array("COMPLETED", "ERROR", "KILLED")
Completed = Array("COMPLETED")
TaskType = WorksheetFunction.Match("tasktypeid", Rows("1:1"), 0)
Status = WorksheetFunction.Match("status", Rows("1:1"), 0)
Elapse = WorksheetFunction.Match("elapse", Rows("1:1"), 0)
'Use Filter Criteria
'100 Total
With Sheets("Raw_Data")
Set rnData = .UsedRange
With rnData
.AutoFilter field:=TaskType, Criteria1:="100"
.AutoFilter field:=Status, Criteria1:=Total, Operator:=xlFilterValues
.Select
For Each rngarea In .SpecialCells(xlCellTypeVisible).Areas
lcount = lcount + rngarea.Rows.Count
Next
a = lcount - 1
End With
End With
'100 Completed
With Sheets("Data")
Set rnData = .UsedRange
With rnData
.AutoFilter field:=TaskType, Criteria1:="100"
.AutoFilter field:=Status, Criteria1:=Completed, Operator:=xlFilterValues
.Select
For Each rngarea In .SpecialCells(xlCellTypeVisible).Areas
lcount1 = lcount1 + rngarea.Rows.Count
Next
b = lcount1 - 1
End With
End With
'101 Total
With Sheets("Raw_Data")
Set rnData = .UsedRange
With rnData
.AutoFilter field:=TaskType, Criteria1:="101"
.AutoFilter field:=Status, Criteria1:=Total, Operator:=xlFilterValues
.Select
For Each rngarea In .SpecialCells(xlCellTypeVisible).Areas
lcount2 = lcount2 + rngarea.Rows.Count
Next
c = lcount2 - 1
End With
End With
'101 Completed
With Sheets("Data")
Set rnData = .UsedRange
With rnData
.AutoFilter field:=TaskType, Criteria1:="101"
.AutoFilter field:=Status, Criteria1:=Completed, Operator:=xlFilterValues
.Select
For Each rngarea In .SpecialCells(xlCellTypeVisible).Areas
lcount3 = lcount3 + rngarea.Rows.Count
Next
d = lcount3 - 1
End With
End With
在上面的代码中,我已经静态计算了条件 1:= 为 100,101,但它应该采用过滤器中存在的动态值。 提前致谢。
【问题讨论】:
-
使用您的宏记录器并过滤数据,使用自定义过滤器和“包含”。然后查看生成的过滤器代码。从那里您将看到它如何使用通配符。
-
嘿,我试过了,但它给出了静态值。
-
是的,您这样做是为了查看使用通配符时代码的样子。