所以我一直在努力寻找为什么我的代码无法正常工作的原因,但是每次尝试时,我得到的结果是什么都没有改变。有人可以告诉我我所缺少的吗?抱歉,我是一个新手,但我正在尝试。
Dim Cell As Range
With Sheets(1)
' loop column D until last cell with value (not entire column)
For Each Cell In .Range("D2:D" & .Cells(.Rows.Count, "D").End(xlUp).Row)
If Cell.Value <> 110 Then
Rows(Cell.Row).EntireRow.Delete
End If
Next Cell
End With
答案 0 :(得分:3)
不是循环,而是使用卓越的内置函数,它更简洁,更简洁。
With Sheets(1).UsedRange
.AutoFilter Field:=4, Criteria1:="<>110"
.Offset(1).SpecialCells(xlCellTypeVisible).EntireRow.Delete
.AutoFilter
End With
如果您坚持循环,请使用以下代码:
With Sheets(1).UsedRange
For lrow = .Rows.Count To 2 Step -1
If .Cells(lrow, 4).Value <> 110 Then .Rows(lrow).Delete
Next lrow
End With
答案 1 :(得分:1)
未经测试,但可能类似于:
Option explicit
Sub DeleteRows()
With thisworkbook.worksheets(1)
' loop column D until last cell with value (not entire column)
Dim lastRow as long
lastRow = .Cells(.Rows.Count, "D").End(xlUp).Row
Dim rowIndex as long
For rowIndex = lastRow to 2 step -1
If .cells(rowIndex, "D").value2 <> 110 then
.cells(rowIndex, "D").entirerow.delete
End if
Next rowIndex
End With
End sub
如果有很多行,则可以使用union
来建立一个包含要删除的所有行的范围,然后一次性删除它们。