2015-08-25 36 views
1

我有一列,其可以采取x0值:找到所有实例,并隐藏行

x 
x 
0 
0 
x 
0 

我要寻找一个快速宏将发现所有x价值和隐藏这些行。我可以通过使用For each cell .. next来做到这一点,但我认为使用数组或其他东西必须有更快的方式。

+1

看起来像Excel的内置自动过滤功能的候选人。根本不需要宏。 – Marc

回答

3

您可以使用SpecialCells()函数查找文本值。然后,只隐藏这些行。

假设你要检查列A,这应该做的伎俩:

Range("A:A").SpecialCells(xlCellTypeConstants, xlTextValues).EntireRow.Hidden = True 

编辑:每@下面

Jeeped的评论。如果你使用的公式和你有你的公式回报0代替"0",那么这应该工作:

Range("A:A").SpecialCells(xlCellTypeFormulas, xlTextValues).EntireRow.Hidden = True 
+0

使用公式创建结果“x”和“0”。这项工作还会继续吗?如果没有,也许我可以将“0”改为空白..? –

+0

如果零返回为“0”而不是“0”,那么这将通过将'xlCellTypeConstants'更改为'xlCellTypeFormulas'来工作。请参阅[Range.SpecialCells方法](https://msdn.microsoft.com/en-us/library/office/ff196157.aspx)。 – Jeeped

+0

fwiw,F5,Special,Formulas,Text是一种快速测试此方法的方法,无需编写一行代码。 – Jeeped

0

以下假定A1中的列标题标签。

with activesheet 
    if .autofiltermode then .autofiltermode = false 
    with .range(.cells(1,1), .cells(rows.count, 1).end(xlup)) 
     .autofilter field:=1, criteria1:="x", VisibleDropDown:=False 
    end with 
end with 

这只是一个AutoFilter Method与隐藏的小箭头。您可以使用常规取消隐藏命令或数据►取消隐藏行。►排序&过滤器►清除或简单地关闭自动过滤器。