2013-07-02 138 views
-2

我正在創建一個包含多列的報告。我需要隱藏所有列都有$ 0的行。使用VBA,如果所有先前列都爲零,我添加了等於零的最後一列。然後我在最後一列上運行一個自動過濾器來隱藏應該隱藏的列。然後,我想刪除最後一列,但隱藏隱藏的行。但是,如果我刪除該列,則過濾器會被撤消。我記得幾年前,我有一種方法可以在刪除過濾列後保留過濾器,但我不記得我是如何做到的。Excel VBA - 過濾數據然後刪除過濾器,保持過濾的數據隱藏

謝謝你的幫助。

+1

您可以進行相反的過濾,手動隱藏所有行,然後刪除過濾器...(我不知道會發生什麼) –

+1

插入過濾器將行高設置爲0? (你已經在VBA中......)(或者實際上刪除行...) – xQbert

+0

我想使用過濾器的原因是因爲當你手動隱藏行時,可能需要幾秒鐘,而過濾以毫秒爲單位工作 –

回答

0

我認爲這會做:

Dim StartCell As Range, CurrentCell As Range 
Set StartCell = Range("G2") 'the start cell of your filter column 
Set CurrentCell = StartCell 


Dim i As Integer 
i = 0 
Do While CurrentCell.Value <> "" 
    If CurrentCell.Value = 0 Then 
     CurrentCell.EntireRow.Hidden = True 
    End If 
    i = i + 1 
    Set CurrentCell = StartCell.Offset(i, 0) 
Loop 
+0

我想使用過濾器的原因是,當您手動隱藏行時,可能需要幾秒鐘,而過濾以毫秒爲單位。 –

+0

您是否在代碼之前使用'Application.ScreenUpdating = false'在代碼和'Application.ScreendUpdating = true'之前嘗試過? –

+0

以下是希望有趣的內容,但不直接與問題相關。如果我們點擊一​​個包含所有零的行的單元格,按Ctrl-A選擇表格,然後按Ctrl-G(GoTo),單擊特殊...並選擇**列差異**,這將選擇所有不包含零行的數據。然後,我們可以按Ctrl-C(複製)並粘貼到表格下方的單個單元格中,以複製除*完全爲零的那些行以外的所有行。 Excel很酷! –

1

您可以使用高級篩選功能,在數據選項卡上實現這一目標。

enter image description here

您可以篩選替代列表(沒有過濾器,箭頭),或在同一工作表的另一個位置。 加入(感謝pnuts)屏幕截圖中的列表範圍應該是A5:L107。

如果這些值是字符串,那麼COUNTIF中的條件將是「$ 0」,但我希望它們是數字。

數字12是我在示例表中的列數。

如果您想在某些VBA代碼中使用它們,請記錄這些步驟。

+1

@pnuts +1好點,謝謝。 –