我正在尝试删除A列中为空的行,而不是整个Excel表中的B列中的空行。
这是因为我需要保留具有A值的行,但是我还需要保留其中没有任何内容的行(它们是我的间隔符)。
我试过这个:
Sub DoStuffIfNotEmpty()
If Not IsEmpty(Colmuns("B").Value) Then
ActiveCell.Columns("A").SpecialCells(xlBlanks).EntireRow.Delete
End If
End Sub
删除了我的垫片
我试过这个:
Sub QuickCull()
On Error Resume Next
Columns("A").Columns("B").SpecialCells(xlBlanks).EntireRow.Delete
End Sub
哪个会删除其中一个符合此条件的行
我试过这个:
Sub delete_Me()
Dim LastRow As Long, x As Long
LastRow = Cells(Rows.Count, "A").End(xlUp).Row
For x = LastRow To 1 Step -1
If Not IsEmpty(Colmuns("B").Value) And _
Columns("A").Value Then
Rows(x).Delete
End If
Next
End Sub
哪个什么都没做......
如果有人能指出我正确的方向,那就太棒了!
答案 0 :(得分:3)
尝试这样的事情:
Sub removeRows()
Dim LastRow As Long
Dim rowNum As Integer
LastRow = Cells(Rows.Count, "B").End(xlUp).Row
For rowNum = LastRow To 1 Step -1
If Range("B" & rowNum).Value <> "" And Range("A" & rowNum).Value = "" Then
Rows(rowNum).Delete
End If
Next rowNum
End Sub
正如@findwindow和@Jeeped所指出的,循环应该从底行到顶行。我的错。我还使用“B”列调整了LastRow。
答案 1 :(得分:2)
可能还使用Count或counta
Sub Button1_Click()
Dim LstRw As Long, Rng As Range
LstRw = Cells(Rows.Count, "A").End(xlUp).Row
For x = LstRw To 1 Step -1
If Application.WorksheetFunction.Count(Range(Cells(x, 1), Cells(x, 2))) = 0 Then Rows(x).Delete
Next
End Sub
答案 2 :(得分:2)
使用Range.AutoFilter Method。过滤列A上的空白和列B上的非空格。检查是否有要删除的行后,删除它们。
Sub del_blankA_valueB()
With Worksheets("Sheet1")
If .AutoFilterMode Then .AutoFilterMode = False
With .UsedRange.Cells
.AutoFilter field:=1, Criteria1:="="
.AutoFilter field:=2, Criteria1:="<>"
With .Resize(.Rows.Count - 1, .Columns.Count).Offset(1, 0)
If CBool(Application.CountA(.Columns(2))) Then
.Cells.EntireRow.Delete
End If
End With
End With
If .AutoFilterMode Then .AutoFilterMode = False
End With
End Sub