我想从范围内删除空白单元格,T2:T200
通过保持数据安全(如果单元格为空)或""
不使用循环1 (=if(b2<>"",1,"")
(=if(b2<>"","safe","")
Sub remove_blankrows()
Range("T2:T200").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub
答案1
您可以通过在 VBA 中使用基于公式的方法来实现这一点。要删除范围 T2:T200 中包含空白单元格的行,同时保持值为 1 或“Safe”的单元格不变:
Sub remove_blankrows()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Sheet1") ' Replace "Sheet1" with your actual sheet name
' Apply the formula to identify rows to delete
ws.Range("U2:U200").Formula = "=IF(OR(T2="""", T2=1, T2=""Safe""), """", ""Delete"")"
' Filter and delete rows based on the formula result
ws.Range("U2:U200").AutoFilter Field:=1, Criteria1:="Delete"
ws.Range("U2:U200").SpecialCells(xlCellTypeVisible).EntireRow.Delete
ws.AutoFilterMode = False
' Clear the temporary formula column
ws.Range("U2:U200").ClearContents
End Sub
- 范围 U2:U200 用作临时列,应用公式,根据条件标记要删除的行。
- 该公式检查 T 列中相应的单元格是否为空白(“”)、1 或“Safe”,并返回空字符串(“”),表示应删除该行。
- 应用公式后,代码会在临时列上设置自动过滤器并过滤标记为“删除”的行。
- 然后,它会删除可见的行并清除临时公式列。
- 最后,自动过滤被关闭。