想把它作为一个for循环,它将A1与B1进行比较,如果它们都包含一个值,则会跳过并跳到下一行并将A2与B2,A3与B3进行比较,直到大约100。
你可以在我的例子中看到IMAGE,就像A4包含一个值但是B4没有这样跳过,A5和B5相同,但是A6和B6都包含一个值所以我想删除该行,并继续: )
Sub Empty_cell()
Dim score1 As Integer, score2 As Integer, result As String, col As Integer, RangeStr1 As String, RangeStr2 As String
col = 4
Let RangeStr1 = "A" & col & ""
Let RangeStr2 = "B" & col & ""
score1 = Range(RangeStr1).Value
score2 = Range(RangeStr2).Value
If score1 >= 0 & score2 >= 0 Then
Range(RangeStr1 & ":" & RangeStr2).Delete
MsgBox "Deleted"
Else
MsgBox "Failed"
col = col + 1 '
MsgBox col
End If
End Sub
答案 0 :(得分:4)
你可以用一句话声明:
Range("A4", Cells(Rows.count, "A").End(xlUp)).SpecialCells(xlCellTypeConstants, xlNumbers).Offset(, 1).SpecialCells(xlCellTypeConstants, xlNumbers).EntireRow.Delete
其中:
Range("A4", Cells(Rows.count, "A").End(xlUp))
引用第4行中的所有列A单元格到最后不是空的
.SpecialCells(xlCellTypeConstants, xlNumbers)
选择所有引用的范围单元格,其数字为
.Offset(, 1).
将结果范围向右移动一列(即到列B的相应单元格)
.SpecialCells(xlCellTypeConstants, xlNumbers)
使用数字
.EntireRow.Delete
最后删除结果单元格的行
答案 1 :(得分:0)
用户3598756解决方案完全没有错。 只是提供一些有点强大且可能适应性强的东西
让我知道你的想法:
Option Explicit
Dim n As Long
Dim i As Long
Sub DeleteRows()
n = Sheets("Sheet1").Cells(Rows.Count, "A").End(xlUp).Row
For i = 4 To n
Select Case Cells(i, 1)
Case Is <> vbNullString
Select Case Cells(i, 2)
Case Is <> vbNullString
Cells(i, 1).EntireRow.Delete
End Select
End Select
Next i
End Sub