我已经搜索了一个小时了,我肯定没有使用正确的术语,因为我似乎找不到任何我认为我需要做的事情。
我有一个小数据集,~100行x9科尔。
我已经让两个学院对其进行了过滤,由此产生的数据集已经减少到8个记录。但是,我需要根据这8条记录再过滤一列。如何迭代该列的Criteria1数组?(Col A)
我想逐步遍历每个元素,并测试它通过的it...if,如果是not...remove,则保留它。但是,我似乎无法理解如何逐步遍历现有Criteria1 1的值数组。
我还想也许我可以使用For循环并逐步遍历过滤过的行,但是它跨过所有数据行,而不是过滤的数据行.
index = 1
'Just picked a range that started in the data area and would be past the number of items I need to go through
For i = 6 To 30 'First row # of filtered data is 13
If Cells(i, "A") = "" Then
'Blank Line
Exit For
Else
aTest(index) = Cells(i, "A")
Debug.Print aTest(index) 'Steps through each row of the unfiltered data, not filtered
index = index + 1
End If
Next i本质上,这是我需要遍历的值数组,并删除以90结尾的值。
ActiveSheet.Range("$A$5:$M$108").AutoFilter Field:=1, _
Criteria1:=Array("31510", "31605", "31607", "31608", "31690", "81603", _
"81604", "81690"), Operator:=xlFilterValues需要有人指点我的方向..。
发布于 2016-12-12 21:49:26
你能试一试吗。该守则做了以下工作:
Criteria1的候选单元格Right(val, 2) <> "90"和存储传递给数组的值Criteria1参数提供数组HTH
Option Explicit
Sub Test()
Dim ws As Worksheet
Dim rngFilter As Range
Dim rngVisibleData As Range
Dim rngCell As Range
Dim varCriteria() As String
Dim lngCounter As Long
'quit if no filter
Set ws = ThisWorkbook.Worksheets("Sheet1")
If Not ws.AutoFilterMode Then
Exit Sub
End If
'get visibile cells in column A as candidates for filter
Set rngVisibleData = ws.Range("A2", ws.Range("A2").End(xlDown)).SpecialCells(xlCellTypeVisible)
'process candidates
lngCounter = 0
For Each rngCell In rngVisibleData
If Right(CStr(rngCell.Value), 2) <> "90" Then
lngCounter = lngCounter + 1
ReDim Preserve varCriteria(1 To lngCounter)
varCriteria(lngCounter) = CStr(rngCell.Value)
Debug.Print rngCell.Value
End If
Next rngCell
'add new filter with processed candidates
Set rngFilter = Range("A1").CurrentRegion
rngFilter.AutoFilter Field:=1, Criteria1:=varCriteria, Operator:=xlFilterValues
End Subhttps://stackoverflow.com/questions/41109162
复制相似问题