2015-08-25 62 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與隱藏的小箭頭。您可以使用常規取消隱藏命令或數據►取消隱藏行。►排序&過濾器►清除或簡單地關閉自動過濾器。