我有一组数据,我们需要删除表格的#N/A
以显示准确的数据。请注意,我想删除列的一侧,而不仅删除N / A以使数据看起来更整洁。
我的代码在设定范围之间创建了一个过滤器,但我想删除第一列中的#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,但是我还没有让它在动态范围内工作。
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"
答案 0 :(得分:1)
您有一个将日期转换为三个值之一的公式: -
Today
Tomorrow
您看到#N/A
,因为该值不适合这三个选项之一。可能的原因: -
在评论中显示公式=VLOOKUP(Q139,B$2:C$40000,1,0)
,我将在此处采取一个大的假设并假设如下: -
=TODAY()
=B2+1
(及以后)Today
Tomorrow
=B4
(及以后)的公式它基本上是对这三个值之一的日期查找。
这会导致这个问题,如果我正确的话(我没有进入聊天室),这将是一个令人惊讶的消除和扣除过程。
现在 IF 以上是真的我建议如下,将原始公式=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
过滤。
这是否有效,我是否接近?
答案 1 :(得分:1)
这是一个可以达到预期效果的简单例程。
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