VBA删除行循环

问题描述 投票:0回答:1

我正在尝试从一个表格中读取某行的值为'#NA'的行。

我的脚本到目前为止是:

Sub remove_na()

Dim ws As Worksheet

Dim r As Variant
Dim i As Variant

Set ws = ThisWorkbook.ActiveSheet

r = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

For Each i In Range("A1:A" & r)
    If i = "#N/A" Then i.EntireRow.Delete
Next

End Sub

当我运行这个时,我在IF语句上得到一个类型不匹配的错误。我已经尝试解决这个问题好多年了,但一直无法解决。我已经尝试使用WHILE循环以及FOR。同样的问题也发生了。

处理数据的例子是这样的数据列(几百条记录)。

#N/A    #N/A
#N/A    #N/A
#N/A    #N/A
#N/A    #N/A
#N/A    #N/A
#N/A    #N/A
#N/A    #N/A
456699.512  6523052.64
456699.512  6523052.64
456699.512  6523052.64
456699.512  6523052.64
456699.512  6523052.64

任何建议都将是非常感激的。

干杯

excel vba access-vba
1个回答
1
投票
Sub remove_na()

Dim ws As Worksheet

Dim r As Integer
Dim i As Integer

Set ws = ThisWorkbook.ActiveSheet

r = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

For i = r To 1 Step -1
    If IsError(Cells(i, 1).Value) Then Rows(i).EntireRow.Delete
Next

End Sub

经过编辑以改进答案


1
投票

您可以使用 IsError() 功能 来评估该单元格是否包含 #N/A 错在你 If...Then 声明。

像这样。

If IsError(i.Value) Then
    i.EntireRow.Delete
End If

注:由于这个工作站没有excel,所以没有测试。

© www.soinside.com 2019 - 2024. All rights reserved.