我需要按照相同的标准过滤,但标准的值在我收到的数据中并不总是相同的,所以它们需要是动态的。动态标准 - 过滤Excel VBA
例如。
Dim crit1 as String crit1 =?
这样:
Selection.AutoFilter字段:= 4,标准1:= 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:=为100101静态但它应该在过滤器中呈现动态值。 在此先感谢。
使用你的宏记录器和过滤数据,使用自定义过滤器和“包含”。然后看看生成的过滤器代码。从那里你会看到它如何使用通配符。 – Davesexcel
嘿我试过了,但它给出了静态值。 – Unicorn
是的,你正在做它看看使用通配符时代码的样子。 – Davesexcel