-1

有人能告诉我我可以使用什么 VB 代码来获得以下宏 excel 结果吗?

如果 B 列为空,我希望删除 A 列中的内容。这是我走了多远:

If Range ("B66")= IsEmpty Then 
Range ("A66").Select 
Selection.ClearContents 
End If
4

1 回答 1

1
Sub Main()
Application.ScreenUpdating = False
    Dim i As Long, r As Range
    For i = Range("A" & Rows.Count).End(xlUp).Row To 1 Step -1
        Set r = Range("A" & i)
        If IsEmpty(r.Offset(0, 1)) Then r.EntireRow.Delete shift:=xlUp
    Next i
Application.ScreenUpdating = True
End Sub

首先,您需要一个循环来遍历 A 列中的所有单元格

For i = Range("A" & Rows.Count).End(xlUp).Row To 1 Step -1设置一个循环,从最后一个单元格迭代到 A 列中的第一个单元格

Range("A" & Rows.Count).End(xlUp).Row查找列 A 中使用的最后一个单元格

Set r = Range("A" & i)将 r 变量设置为 Range 对象

If IsEmpty(r.Offset(0, 1)) Then偏移量指向同一行 B 列中的单元格,因此如果它与 A 列的相邻单元格(即单元格(sameRow,B 列)为空,则

r.EntireRow.Delete shift:=xlUp删除整行

Application.ScreenUpdating = False/True使用循环时关闭屏幕更新以加快执行速度

于 2013-10-11T09:55:13.470 回答