vba选择当前范围但不选择#N / A.

时间:2014-06-25 13:41:23

标签: vba excel-vba excel

我有一个时间和数字这样的范围,其中"时间"在单元格A1中:

   time    number
   07:52:55  3
   07:53:52  2
   07:54:55  #N/A
   07:55:52  2

现在我想选择范围,所以我这样做:

Set rng = ActiveSheet.Range("a1").CurrentRegion

这给了我RNG对象中的上述范围但我不想要任何#N / A&#39。是否有一种简单的方法可以在没有#N / As的情况下将该范围放入RNG对象中。我想在没有循环的情况下这样做。这可能吗?你能用特殊电池......?

我应该说我将这个范围内的NAL读入2D阵列。当我尝试使用自动过滤器过滤NA时," Arr"没有完全填充。

          Sheets("data").Select
                     Range("A1").Select
                     rngAddress = Range("A1").CurrentRegion.Address
                     Selection.AutoFilter
                     ActiveSheet.Range(rngAddress).AutoFilter Field:=2, Criteria1:="<>#N/A", Operator:=xlFilterValues
                      Range(rngAddress).Select
                     Set rng = Selection.SpecialCells(xlCellTypeVisible)
                     rng.Select
                     Arr = rng  'Arr is not populated with the full array

谢谢!

1 个答案:

答案 0 :(得分:1)

我个人会这样做:

  • 。按&#39;数字排序范围&#39;列下降(我相信N / As将出现在底部)

    • use.Find找到第一个NA

    • 从Activecell.Row - 1

    • 中选择

-Or -

如果你不关心保持你可以使用的N /:

Sub FormatSheet()
Dim rng As Range

Set rng = Range(Range("K6"), Range("D65536").End(xlUp).Offset(0, 7))
rng.SpecialCells(xlCellTypeFormulas, xlErrors).EntireRow.Delete
Set rng = Nothing
End Sub

此代码将删除所有具有N / A

的行

代码取自:http://www.mrexcel.com/forum/excel-questions/79525-how-detect-n-using-visual-basic-applications.html