通过VBA删除Excel中的半空白logging

我试图删除VBA中不完全空白的行。 我这样说的原因是因为我不能像我的第一列那样适用完全空白的条件,从来没有空白,我想过滤第二列。

lastrow = sht.Cells.Find("*", searchorder:=xlByRows, searchdirection:=xlPrevious).Row For i = 1 To Counter If ActiveCell = "" Then Selection.EntireRow.Delete Counter = Counter - 1 Else ActiveCell.Offset(1, 0).Select End If Next i ( Given Info ) Desired Result Name ID Address Name ID Address John NYC Jack 55 Chicago Jack 55 Chicago Kate 65 Boston Kate 65 Boston Mike London 

现在偏移将总是遍历到下一行,但是如果行的第二列是空白的,我怎样删除整行。 谢谢。

.AutoFilter只能显示要删除的行。

 Sub nuke_Blank_Bs() With ActiveSheet With .Cells(1, 1).CurrentRegion If .AutoFilter Then .AutoFilter .AutoFilter Field:=2, Criteria1:="=" With .Offset(1, 0) If CBool(Application.Subtotal(103, .Cells)) Then _ .EntireRow.Delete End With .AutoFilter End With End With End Sub 

这将筛选B列中的空白条目,如果find条目,则删除整个行。

我会用这个。 循环遍历列A中的每个单元格,从最高编号的行到单元格A1,并且如果B列中同一行中的单元格为空,则删除该列。

注意:我拿出ActivateSelect 。 他们没有必要,会减慢你的代码。

 Sub test() Dim i As Integer For i = Range("A" & Rows.Count).End(xlUp).Row To 1 Step -1 If Range("b" & i) = "" Then Range("b" & i).EntireRow.Delete End If Next i End Sub 

另外,你可以使用这个:

 Sub test2() Dim blank_Bs As Range On Error Resume Next Set blank_Bs = Range("b1:b" & Range("a" & Rows.Count).End(xlUp).Row).SpecialCells(xlCellTypeBlanks) If Not blank_Bs Is Nothing Then _ blank_Bs.EntireRow.Delete On Error GoTo 0 End Sub