过滤出N / A,以便除去N / A和N / A旁边的所有列

我有一组数据,我们需要删除表中#N/A来显示准确的数据。 请注意,我想删除列的侧面,不仅删除N / A,使数据看起来更整齐。

我的代码下面创build一个设置范围之间的filter,虽然我想删除列中的#N #N/A

相反,它只是把#N/A列第一列,而不是将其删除。

  sht1.ListObjects.Add(xlSrcRange, , xlYes).Name = _ "Table1" sht1.ListObjects("Table1").Range.AutoFilter Field:=9, Criteria1:= _ ">=-1000000000000", Operator:=xlAnd, Criteria2:="<=1000000000000000" sht1.Range("Table1[#All]").Select ''sht1.ListObjects("Table1").Range.AutoFilter Field:=1, Criteria1:="=#N/A" 

我努力了:

 wb1.ListObjects("Table1").Range.AutoFilter Field:=1, Criteria1:="=#N/A" 

以及其他尚未为我工作的变化。

虽然这对我来说完全没用,因为我的数据是非常有活力和不断变化的。

值得注意的是,这不包括N / A,但我还没有得到这个dynamic范围的工作。

  ActiveSheet.ListObjects("Table2").Range.AutoFilter Field:=1, Criteria1:= _ Array("Nov 13", "Nov 13", "Today", _ ''etc,, ), Operator:= _ xlFilterValues End Sub ActiveSheet.Range("A:A").AutoFilter Field:=1, Criteria1:="#N/A" 

imgur.com/a/TqwDz

你有一个公式将date转换为三个值之一:

  • Today
  • Tomorrow
  • 任何未来的date

您正在看到#N/A因为该值不符合这三个选项之一。 可能的原因是: –

  • date字段是空的
  • date是过去的
  • date远在将来

在评论中,你会看到公式=VLOOKUP(Q139,B$2:C$40000,1,0) ,我将在这里做一个大的假设,并假设如下:

  • B2是公式=TODAY()
  • B3到B40000是一个公式=B2+1 (及以上)
  • C2的值为Today
  • C3有Tomorrow的价值
  • C4到C40000是一个公式=B4 (及以后)

它基本上是对这三个值之一的date大查找。

这会造成这个问题,如果我是正确的(我没有进入聊天室),那么我就是一个非常奇妙的过程。

现在如果上述情况是真的,我会build议如下,改变原来的公式=VLOOKUP(Q139,B$2:C$40000,1,0) =IF(Q139=TODAY(),"Today",IF(Q139=TODAY()+1,"Tomorrow",IF(Q139>TODAY(),Q139,"Discount")))

这个新的公式规定:

  • 如果Q139等于今天,则输出Today
  • 如果Q139等于今天+ 1,则输出Tomorrow
  • 如果Q139大于今天,输出Q139
  • 其他输出“折扣”

您可以通过Discount进行过滤。

这工作,我甚至closures?

这是一个简单的例程,可以达到预期的效果。

 Sub test2() Dim c As Range For Each c In ActiveSheet.UsedRange If IsError(c) Then Rows(c.Row).EntireRow.Delete End If Next c End Sub