我有以下数据
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
如果您有任何提示,请与我分享。提前致谢!
答案 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 = xlCalculationManual
和Application.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
看起来很长,数据变得很多可能需要很长时间..