如果列B中的任何单元格包含字符串X,则删除行并向上移位单元格

时间:2013-06-28 20:32:40

标签: excel vba excel-vba

我不是很有excel的经验,也不确定这是否可能,但我正在处理一个非常大的Excel电子表格,B列中的一些单元格包含N/A等值。

我想知道是否有办法创建一些删除所有行的条件语句,如果该行B列中的单元格包含N/A,并在删除后移位单元格?

我真的很感激任何建议,因为这将为我节省大量时间。

非常感谢提前!

2 个答案:

答案 0 :(得分:3)

如果这些是#N / A(系统)错误,那么使用GoTo Special(常量,错误)可以直接进行:

Sub DeleteErrorRows()
    On Error Resume Next    'in case there are no errors in cells
    Range("B:B").SpecialCells(xlCellTypeConstants, 16).EntireRow.Delete
    On Error GoTo 0     'resume error handling
End Sub

我怀疑有可能使用Replace将'N / A'替换为'#N / A'然后使用我的程序,虽然我没有测试过。 已添加是的,它应该有效:

Sub DeleteErrorRows()
    Range("B:B").Replace "N/A", "#N/A"
    On Error Resume Next    'in case there are no errors in cells
    Range("B:B").SpecialCells(xlCellTypeConstants, 16).EntireRow.Delete
    On Error GoTo 0     'resume error handling
End Sub

实际上,我认为这可以更普遍地应用,用'#N / A'替换一些单元格值作为删除行的机制:)

答案 1 :(得分:0)

自下而上工作,检查列B中的值是否为N / A,如果找到,您可以使用:

ActiveSheet.Cells(currentRow,1).EntireRow.Delete