删除与#N / A关联的数据

时间:2013-08-14 06:47:28

标签: excel excel-vba vba

我有以下数据

A B   C   D   E

1  test abc abc abc #N/A

2

3

我想删除3 abc以及#N / A,但我无法删除整行,因为它可能包含不被删除的数据。范围也不固定。

我想到了以下代码,但它只是将#N / A替换为“”

Cells.Replace "#N/A", "", xlWhole

如果您有任何提示,请与我分享。提前致谢!

2 个答案:

答案 0 :(得分:1)

你自己的答案很明显,但需要进行一些修正和调整:

Sub DeleteNA()
    Dim c As Range
    For Each c In Intersect(ActiveSheet.Columns("T"), ActiveSheet.UsedRange).Cells
        If VarType(c.Value) = vbError And c.Text = "#N/A" Then c.Offset(, -4).Resize(, 5).ClearContents
    Next
End Sub

如果这仍然需要很长时间,请考虑使用Application.Calculation = xlCalculationManualApplication.ScreenUpdating = False

编辑:校正细胞和4个细胞在右边(而不是3个)

答案 1 :(得分:0)

在修改了我在网上找到的一些代码之后,我尝试了一种方法,

Sub DeleteNA()
Dim r As Long
Dim iCol As Long

    For iCol = 1 To Cells(1, Columns.Count).End(xlToLeft).Column
        For r = Cells(Rows.Count, iCol).End(xlUp).Row To 1 Step -1
             If Application.WorksheetFunction.IsNA(Cells(r, iCol)) Then

             Cells(r, iCol - 4) = ""
             Cells(r, iCol - 3) = ""
             Cells(r, iCol - 2) = ""
             Cells(r, iCol - 1) = ""
             Cells(r, iCol) = ""

             End If
        Next r
    Next iCol
    End Sub

看起来很长,数据变得很多可能需要很长时间..