我的VBA脚本中有一些代码,当行的相应B列的值等于零时,该代码应该删除整行。不幸的是,我一直在使用的代码行并没有完全按照我想要的方式执行,因为如果相应行中的任何单元格等于零,它会删除整行。 这是迄今为止的代码:
With Worksheets("Sheet2")
For myloop = .Range("B10000").End(xlUp).Row To 1 Step -1
If .Cells(myloop, 4).Value = 0 Then .Rows(myloop).EntireRow.Delete
Next myloop
End With
例如,我有一行,其中D列中的单元格等于零,即使B列中单元格的值不为零,此代码也会删除整行。如何更改代码,以便它实际上只扫描B列中的条目?
任何帮助都表示赞赏,并提前致谢。
答案 0 :(得分:1)
用户gizlmo提供了答案:
将.Cells(myloop, 4).Value
更改为.Cells(myloop, 2).Value
答案 1 :(得分:1)
AutoFilter()
方法如下:
With Worksheets("Sheet2") '<--| reference your shet
With .Range("B1", .Cells(Rows.Count, "B").End(xlUp)) '<--| reference its column B range from row 1 (header) down to last not empty row
If WorksheetFunction.CountBlank(.Cells) + WorksheetFunction.CountIf(.Cells, 0) = 0 Then Exit Sub '<--| exit of no empty or "zero" cells
.AutoFilter Field:=1, Criteria1:=0, Operator:=xlOr, Criteria2:="" '<--| filter column B cells with "0" content
.Offset(1).Resize(.Rows.Count - 1).SpecialCells(xlCellTypeVisible).EntireRow.Delete '<--| if any filtered cell other than headers then delete their entire rows
End With
.AutoFilterMode = False
End With