我正在創建一個包含多列的報告。我需要隱藏所有列都有$ 0的行。使用VBA,如果所有先前列都爲零,我添加了等於零的最後一列。然後我在最後一列上運行一個自動過濾器來隱藏應該隱藏的列。然後,我想刪除最後一列,但隱藏隱藏的行。但是,如果我刪除該列,則過濾器會被撤消。我記得幾年前,我有一種方法可以在刪除過濾列後保留過濾器,但我不記得我是如何做到的。Excel VBA - 過濾數據然後刪除過濾器,保持過濾的數據隱藏
謝謝你的幫助。
我正在創建一個包含多列的報告。我需要隱藏所有列都有$ 0的行。使用VBA,如果所有先前列都爲零,我添加了等於零的最後一列。然後我在最後一列上運行一個自動過濾器來隱藏應該隱藏的列。然後,我想刪除最後一列,但隱藏隱藏的行。但是,如果我刪除該列,則過濾器會被撤消。我記得幾年前,我有一種方法可以在刪除過濾列後保留過濾器,但我不記得我是如何做到的。Excel VBA - 過濾數據然後刪除過濾器,保持過濾的數據隱藏
謝謝你的幫助。
我認爲這會做:
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
我想使用過濾器的原因是,當您手動隱藏行時,可能需要幾秒鐘,而過濾以毫秒爲單位。 –
您是否在代碼之前使用'Application.ScreenUpdating = false'在代碼和'Application.ScreendUpdating = true'之前嘗試過? –
以下是希望有趣的內容,但不直接與問題相關。如果我們點擊一個包含所有零的行的單元格,按Ctrl-A選擇表格,然後按Ctrl-G(GoTo),單擊特殊...並選擇**列差異**,這將選擇所有不包含零行的數據。然後,我們可以按Ctrl-C(複製)並粘貼到表格下方的單個單元格中,以複製除*完全爲零的那些行以外的所有行。 Excel很酷! –
您可以使用高級篩選功能,在數據選項卡上實現這一目標。
您可以篩選替代列表(沒有過濾器,箭頭),或在同一工作表的另一個位置。 加入(感謝pnuts)屏幕截圖中的列表範圍應該是A5:L107。
如果這些值是字符串,那麼COUNTIF中的條件將是「$ 0」,但我希望它們是數字。
數字12是我在示例表中的列數。
如果您想在某些VBA代碼中使用它們,請記錄這些步驟。
@pnuts +1好點,謝謝。 –
您可以進行相反的過濾,手動隱藏所有行,然後刪除過濾器...(我不知道會發生什麼) –
插入過濾器將行高設置爲0? (你已經在VBA中......)(或者實際上刪除行...) – xQbert
我想使用過濾器的原因是因爲當你手動隱藏行時,可能需要幾秒鐘,而過濾以毫秒爲單位工作 –