【问题标题】:Excel find rows with #na [duplicate]Excel用#na查找行[重复]
【发布时间】:2017-07-14 04:04:52
【问题描述】:

我正在尝试找到一种方法来查找带有 #na 的行,以便我可以复制该行并将其粘贴到另一个选项卡中,以便分析错误。

到目前为止我有以下,但我有一些问题

Dim iCntr As Long
Dim lastColumn As Long
For iCntr = Cells(Rows.Count, "A").End(xlUp).Row To 1 Step -1
    For lastColumn = Cells.Find(What:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByColumns).Column To 1 Step -1
        If Cells(iCntr, lastColumn).Text = "#N/A" Then
            MsgBox "row" & iCntr
        End If
    Next
Next

首先,代码似乎没有找到带有#N/A 错误的单元格。我不知道为什么。

另外,我有 60K 行和 50 列,尝试运行上面的代码需要很长时间。我希望代码在找到 #N/A 后立即跳转下一行,因为无需检查其余列

关于如何解决前面的问题有什么想法吗?

目前我只是显示一个消息框,但我的目的是在找到 #N/A 后复制所有行并将其逐行复制到另一页。

【问题讨论】:

  • 如果你想选择错误单元格,我相信你可以使用range("A:A").SpecialCells(xlCellTypeFormulas,xlErrors)

标签: excel vba


【解决方案1】:

您正在尝试查找字符串“#N/A” - 这不起作用。 Excel有函数IsNA(),在VBA中可以使用Application.WorksheetFunction.IsNA(rngToCheck.Value)

希望这会有所帮助。

【讨论】:

  • 感谢 Mihai,这有帮助(如果 Application.WorksheetFunction.IsNA(Cells(iCntr, lastColumn).Value) Then)。你知道如何让它跳到下一行并停止搜索其余的列,以便我可以加快这个过程吗?
  • 如果我理解正确,您只需要退出 FOR 循环之一。使用退出。更多细节在这里:stackoverflow.com/questions/9414969/excel-vba-exit-for-loop
  • 完美,谢谢米海
  • 很高兴它有帮助。祝你有美好的一天!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多