Note: The other languages of the website are Google-translated. Back to English

當Excel中的數據更改時,如何自動重新應用自動篩選?

在Excel中,當您應用 篩選 過濾數據的功能,過濾結果不會隨著過濾數據中數據的更改而自動更改。 例如,當我從數據中過濾所有Apple時,現在,我將過濾後的數據之一更改為BBBBBB,但是結果不會更改,也不會顯示以下屏幕截圖。 本文,我將討論如何在Excel中的數據更改時自動重新應用自動篩選。

doc auot刷新過濾器1

使用VBA代碼更改數據時自動重新應用自動篩選


箭頭藍色右氣泡 使用VBA代碼更改數據時自動重新應用自動篩選

通常,您可以通過手動單擊重新應用功能來刷新過濾器數據,但是,在這裡,我將介紹一個VBA代碼,供您在數據更改時自動刷新過濾器數據,請執行以下操作:

1。 轉到要在數據更改時自動刷新過濾器的工作表。

2。 右鍵單擊工作表標籤,然後選擇 查看代碼 從上下文菜單中,彈出 Microsoft Visual Basic for Applications 窗口,請將以下代碼複製並粘貼到空白的“模塊”窗口中,請參見屏幕截圖:

VBA代碼:數據更改時自動重新應用過濾器:

Private Sub Worksheet_Change(ByVal Target As Range)
   Sheets("Sheet3").AutoFilter.ApplyFilter
End Sub

doc auot刷新過濾器2

備註:在上面的代碼中, 表3 是您使用的帶有自動過濾器的工作表的名稱,請根據需要進行更改。

3。 然後保存並關閉此代碼窗口,現在,當您更改過濾後的數據時, 篩選 功能將立即自動刷新,請參見屏幕截圖:

doc auot刷新過濾器3


最佳辦公效率工具

Kutools for Excel 解決了你的大部分問題,並將你的生產力提高了 80%

  • 重用: 快速插入 複雜的公式,圖表 以及您以前使用過的任何東西; 加密單元 帶密碼 創建郵件列表 並發送電子郵件...
  • 超級公式欄 (輕鬆編輯多行文本和公式); 閱讀版式 (輕鬆讀取和編輯大量單元格); 粘貼到過濾範圍...
  • 合併單元格/行/列 不會丟失數據; 拆分單元格內容; 合併重複的行/列...防止細胞重複; 比較範圍...
  • 選擇重複或唯一 行; 選擇空白行 (所有單元格都是空的); 超級查找和模糊查找 在許多工作簿中; 隨機選擇...
  • 確切的副本 多個單元格,無需更改公式參考; 自動創建參考 到多張紙; 插入項目符號,複選框等...
  • 提取文字,添加文本,按位置刪除, 刪除空間; 創建和打印分頁小計; 在單元格內容和註釋之間轉換...
  • 超級濾鏡 (將過濾方案保存並應用於其他工作表); 高級排序 按月/週/日,頻率及更多; 特殊過濾器 用粗體,斜體...
  • 結合工作簿和工作表; 根據關鍵列合併表; 將數據分割成多個工作表; 批量轉換xls,xlsx和PDF...
  • 超過 300 項強大的功能. 支持 Office / Excel 2007-2021 和 365。支持所有語言。 在您的企業或組織中輕鬆部署。 完整功能 30 天免費試用。 60 天退款保證。
kte選項卡201905

Office選項卡為Office帶來了選項卡式界面,使您的工作更加輕鬆

  • 在Word,Excel,PowerPoint中啟用選項卡式編輯和閱讀,發布者,Access,Visio和Project。
  • 在同一窗口的新選項卡中而不是在新窗口中打開並創建多個文檔。
  • 將您的工作效率提高 50%,每天為您減少數百次鼠標點擊!
officetab底部
按評論排序
留言 (36)
5中的5評分 · 1評級
網站主持人對此評論進行了最小化
你好,我如何在谷歌金融中使用所有這些? Tks
網站主持人對此評論進行了最小化
不錯..真的我需要它
網站主持人對此評論進行了最小化
我想在一張紙上進行更改以使其他多張紙自動過濾,我該如何更改此代碼? 例如:SheetA 已更改,這會導致 Sheet1、Sheet2 和 Sheet3 應用其自動過濾器。 謝謝!
網站主持人對此評論進行了最小化
如果單元格設置為 =sheet1!E6,我正在為工作表的正面執行此操作。 更改時不會應用過濾器。 如果我更改背頁中的數字,它會調整前面但不過濾。 如果調整公式以過濾它的標準,它會重新應用。 我能做些什麼?
網站主持人對此評論進行了最小化
使用此
Private Sub Work_Change(ByVal Target As Range)
Activesheet.AutoFilter.ApplyFilter
END SUB
網站主持人對此評論進行了最小化
我根本無法讓它為我工作。 我正在嘗試從主表中獲取並讓它只接受適用於每個選項卡上的某些項目經理的工作,這些工作都有他們的名字。 我還希望它在我進行更改時自動刷新。
網站主持人對此評論進行了最小化
這個命令全部假裝什麼都不做。 完全嘗試但沒有用。
網站主持人對此評論進行了最小化
效果很好,節省了我很多時間和麻煩。真的很棒的提示。非常感謝您的幫助
網站主持人對此評論進行了最小化
該解決方案完美運行。 謝謝你寫下來! 如果有人遇到麻煩,有幾件事需要考慮。

首先,Worksheet_Change 事件被逐張調用。 這意味著,如果您有多個需要更新過濾器的工作表,您將需要響應所有這些事件。 每個工作表都有一個 Worksheet_Change 子例程,而不是整個工作簿的一個子例程(一個例外 - 請參閱下面的註釋)。

其次,作為第一個的後續,代碼必須放在特定於要監控的工作表的代碼模塊中。 進入 VB 編輯器後,它很容易(不經意間)切換代碼模塊,因此必須注意將其放置在特定於要監視數據更改的工作表中。

第三,這是未經證實的,但可能是一個錯誤點。 該示例使用“Sheet1”、“Sheet2”等工作表名稱。如果您已重命名工作表,則可能需要更新代碼。 請注意,在示例中,Sheet7 的名稱為“dfdf”。 如果你想在那裡更新過濾器,你需要使用;
Sheets("dfdf").AutoFilter.ApplyFilter
沒有;
Sheets("Sheet7").AutoFilter.ApplyFilter

更新文章可能會很好,包括帶有重命名工作表的示例。


最後,如果您想監控一張表的數據更改,但更新多張表上的過濾器,那麼您只需要一個子程序,放置在您正在監控的工作表的代碼模塊中。 代碼看起來像這樣;

# (代碼必須放在工作表中才能監控數據變化)
Private Sub Worksheet_Change(ByVal Target As Range)
Sheets("Sheet1").AutoFilter.ApplyFilter
Sheets("Sheet2").AutoFilter.ApplyFilter
Sheets("Sheet3").AutoFilter.ApplyFilter
Sheets("Sheet4").AutoFilter.ApplyFilter
END SUB
網站主持人對此評論進行了最小化
你好,邁克,
感謝您的詳細解釋。
網站主持人對此評論進行了最小化
很好的解釋,謝謝。

但是如何在創建新工作表時觸發 Sheets("Sheet3").AutoFilter.ApplyFilter ?
由於我無法在尚不存在的工作表上編寫您提到的代碼
網站主持人對此評論進行了最小化
太好了謝謝!
網站主持人對此評論進行了最小化
像冠軍一樣工作,如此簡單。 非常感謝!
網站主持人對此評論進行了最小化
這似乎很棒。 你能告訴我如何對排序而不是過濾器做同樣的事情嗎?
網站主持人對此評論進行了最小化
你好,克里斯,
可能,下面的文章可以解決你的問題,請查看:

https://www.extendoffice.com/documents/excel/2592-excel-auto-sort-by-value.html

請嘗試一下!
網站主持人對此評論進行了最小化
嗨,這很好用,但僅在手動更改表中的數據時。

我有一個“前十名/排行榜”樣式的過濾表,該表是從單獨的工作表上的數據輸入中填充的(實際上,數據在到達表之前要經過 3 個工作表)。 當數據輸入工作表中的數據發生更改時,排行榜表格數據會更新,但過濾器不會自動刷新。
關於如何做到這一點的任何想法?
非常感謝。
亞歷克斯
網站主持人對此評論進行了最小化
我有她同樣的問題。 有人可以幫助我們嗎?
網站主持人對此評論進行了最小化
我有同樣的問題。 我正在嘗試自動過濾包含來自工作表 2 的數據的工作表 1。它僅在我更改工作表 2 上的數據時才有效,而不是工作表 1。
關於為什麼這不起作用以及如何解決它的任何想法?
網站主持人對此評論進行了最小化
嗨,這似乎很好用,但是當同一個工作表(選項卡)上有多個過濾器時,我遇到了問題。 我將單元格範圍轉換為表格,以允許在同一個工作表中使用單獨的多個過濾器。 此示例似乎僅更新其中一個表/過濾器。 關於如何更新工作表中的所有表/過濾器的任何建議?

非常感謝,

湯姆
網站主持人對此評論進行了最小化
你好湯姆,
本文中的代碼適用於工作表中的多個表,您只需在更改數據後按 Enter 鍵,而不是單擊到其他單元格。
請嘗試一下。
網站主持人對此評論進行了最小化
寺院卡西

桑加特蒙班圖
網站主持人對此評論進行了最小化
網站主持人對此評論進行了最小化
出色而簡單的操作。 非常感謝!
網站主持人對此評論進行了最小化
嗨,

這段代碼很好用,非常感謝。

但是,我有一個小問題 - 如果我更改不屬於表格的任何單元格中的值,我會收到運行時錯誤消息:

“運行時錯誤‘91’:

對像變量或未設置塊變量”


我有調試或結束選項,繼續選項是灰色的。 我可以單擊“結束”,代碼仍然有效,但是每次更改後都必須處理這個彈出窗口非常煩人。

任何人都有類似的經驗或關於如何排序的建議?

謝謝!
網站主持人對此評論進行了最小化
你好,大衛,
要解決您的問題,您可以應用以下代碼:

Private Sub Worksheet_Change(ByVal Target As Range)
在錯誤恢復下一頁
Sheets("Sheet3").AutoFilter.ApplyFilter
END SUB

請嘗試一下,希望對您有所幫助!
網站主持人對此評論進行了最小化
嗨,天陽,


我已經實施了你的解決方案,它確實是固定的。

非常感謝!
網站主持人對此評論進行了最小化
您好,我遇到了同樣的問題,粘貼了新代碼並更改了工作表的名稱,但沒有任何反應,過濾器沒有更新
網站主持人對此評論進行了最小化
這裡也有同樣的問題,有更新的解決方案嗎?
網站主持人對此評論進行了最小化
在 Office 365 上根本無法使用它
有什麼建議麼
網站主持人對此評論進行了最小化
嗨,非常感謝您的幫助。 有些東西不適合我。 這是故事。

Sheet1 具有可變數據。 Sheet3 具有靜態數據和過濾器。 “Sheet3”上的過濾條件來自 Sheet1。 Sheet1 的數據來自 Sheet3 上的過濾結果。

Sheet3有代碼:

私人子工作表_SelectionChange(ByVal Target As Range)
Range("A1:U14").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range("A22:U23"), CopyToRange:=Range("A25:U26"), Unique:=False
END SUB

如果我在 Sheet3 上做任何事情,效果會很好。 沒問題。 謝謝!

起初我在 Sheet1 上有代碼:

Private Sub Worksheet_Change(ByVal Target As Range)
Sheets("Sheet3").AutoFilter.ApplyFilter
END SUB

這導致錯誤“運行時錯誤 91,對像變量或未設置塊”。

我根據註釋將代碼更改為:

Private Sub Worksheet_Change(ByVal Target As Range)
在錯誤恢復下一頁
Sheets("Sheet3").AutoFilter.ApplyFilter
END SUB

現在我沒有收到錯誤,但 Sheet3 和 Sheet1 上的數據不會改變。 換句話說,當我對 Sheet3 進行更改時,不會發生將過濾器應用於 Sheet1 的事件。 我打沒關係或在更改在 Sheet3 上設置的 Sheet1 過濾條件單元格後單擊另一個單元格。

順便說一句,我希望如果我想在 Sheet1 上有多個單元格,這會導致除了 Sheet4 之外的 Sheet 5 和 3 上的過濾器,我需要 Sheet 1 上的代碼來閱讀:

Private Sub Worksheet_Change(ByVal Target As Range)
在錯誤恢復下一頁
Sheets("Sheet3").AutoFilter.ApplyFilter
Sheets("Sheet4").AutoFilter.ApplyFilter
Sheets("Sheet5").AutoFilter.ApplyFilter
END SUB

再次感謝!
網站主持人對此評論進行了最小化
嗨,

這是一個很棒的代碼,謝謝。 我遇到的唯一問題是我在單獨的圖表表上使用下拉菜單。 如果我手動更改與下拉列表關聯的單元格中的值,它會起作用。 但是當我嘗試只使用下拉菜單時,它不會更新。 有什麼想法嗎?
網站主持人對此評論進行了最小化
我實際上有來自另一個 Excel 文件的數據,這些文件被導入到名為“數據庫”的 Excel 表中。 然後我在同一個 Excel 文件中導入這些數據,但在另一個 ExcelSheet“概述”中。 我希望當原始源中的數據發生更改時,過濾器在“概述”表中應用。 感謝您轉發可以幫助我的人:)。 PS不能在第一個excelsheet中使用VBA
這裡還沒有評論
載入更多
留下你的意見
以訪客身份發帖
×
評價此帖子:
0   字符
推薦地點

關注我們

版權所有©2009 - 萬維網。extendoffice.com。 | 版權所有。 供電 ExtendOffice。 |
Microsoft和Office徽標是Microsoft Corporation在美國和/或其他國家的商標或註冊商標。
受Sectigo SSL保護