我必须过滤列X
中的所有空白行,并根据列M
,W
,V
中指定的值,我必须填充列{{ 1}}。
我已经附加了一部分代码,其中我试图遍历所有可见行,但是VBA遍历了所有行,并且还更改了所有非空白值。请您指导我解决这个问题?预先感谢!
X
答案 0 :(得分:0)
如果您有(例如)10个可见行,那么它将从1循环到10
For m = 1 To rng5.SpecialCells(xlCellTypeVisible).Rows.Count
因此,当您处于(例如)m = 5时,
rng5.Cells(RowIndex:=m, ColumnIndex:="X")
将指向rng5
中的第五行。这不一定与rng5
您的With
块似乎没有连接到所包含的代码,因此可以将其删除。
尝试这样的事情:
Sub Tester()
Dim rw As Range, rng5 As Range, mVal
Set rng5 = Sheet1.Range("A1").CurrentRegion
Set rng5 = rng5.Offset(1, 0).Resize(rng5.Rows.Count - 1) 'exclude headers
Sheet1.Range("A1").AutoFilter Field:=24, Criteria1:="="
For Each rw In rng5.SpecialCells(xlCellTypeVisible).Rows
If InStr(rw.Cells(1, "W").Value, "123") = 0 And _
InStr(rw.Cells(1, "V").Value, "Non") = 0 Then
mVal = rw.Cells(1, "M").Value
If InStr(mVal, "ABC") > 0 And InStr(mVal, "EFG") = 0 Then
rw.Cells(1, "X").Value = "XYZ"
ElseIf InStr(mVal, "MNO") > 0 And InStr(mVal, "567") = 0 Then
rw.Cells(1, "X").Value = "UVW"
End If
End If
Next rw
End Sub