VBA Excel – 如果某个单元格为空,则删除一行中的所有条目

我试图想出一个代码,将删除行的相应的B单元格是空的所有行的条目。

例如,如果B4为空,则代码应删除C4:AU4中的所有条目。 它应该为从B3开始的所有行执行MaxRowList的事先定义的值。

只有我能想出的东西是

Columns("B:B").SpecialCells(xlCellTypeBlanks).EntireRow.Delete 

但是,这会从工作表中删除整个行,从而导致安排失败。 它必须只删除相应的$ C $:$ AU $范围内的条目,并且不会删除该行。

只需使用IntersectClearContents

 Sub tgr() With ActiveWorkbook.ActiveSheet Intersect(.Range("C:AU"), .Columns("B").SpecialCells(xlCellTypeBlanks).EntireRow).ClearContents End With End Sub 

我假设你想清除单元格的内容,而不是删除它们(这将移动到下面或右边的单元格的内容)? 尝试

 dim ws as worksheet set ws = activesheet ' <== Replace with whatever sheet you are working. Dim emptyCells As Range, cell As Range Set emptyCells = ws.Columns("B:B").SpecialCells(xlCellTypeBlanks) For Each cell In emptyCells Dim r As Range Set r = ws.Range("C" & cell.row & ":AE" & cell.row) r.Clear Next cell 

不确定是否有可能避免循环。 愚蠢的我,当然是 – 见@tigeravatar。

 Sub x() Dim r As Range For Each r In Columns("B:B").SpecialCells(xlCellTypeBlanks).Offset(, 1) r.Resize(, 45).Clearcontents Next r End Sub