Skip to main content

如何根據Excel中的單元格值自動篩選行?

Author: Xiaoyang Last Modified: 2025-07-21

在 Excel 中,標準的篩選功能提供了一種快速方法,可以根據您手動選擇的條件來篩選數據。然而,在某些工作流程中,您可能希望在特定單元格中輸入值或條件後,數據能夠自動刷新。例如,如果您希望數據集能夠根據您在另一個單元格中輸入的關鍵字或參數即時篩選,這已經超出了原生 Excel 篩選功能的範圍。這種動態或“自動篩選”可以幫助簡化您的數據審查過程,減少手動篩選所需的時間,並通過將篩選條件直接與單元格值關聯來提高準確性。如果您希望實現這樣一種基於單元格輸入的自動篩選機制,有幾種實用的解決方案可供選擇。

使用 Excel 公式解決方案根據單元格值自動篩選行

使用 VBA 代碼根據輸入的單元格值自動篩選行


使用 Excel 公式解決方案根據單元格值自動篩選行

如果您偏好非宏的方法,或者由於安全設置或協作問題需要避免使用 VBA,您可以通過結合公式和 Excel 內建的篩選功能來創建“自動篩選”效果。這種解決方案非常適用於 Microsoft 365、Microsoft 2019 及更高版本,這些版本支持如 FILTER 等動態陣列函數。它特別適合與未啟用宏的同事共享,或者在需要免安裝自動化的輕量模板中使用。

1. 選擇一個空白單元格作為篩選結果的起始位置(例如,將游標放在 G2 單元格中)。

=FILTER(A2:C20, (A2:A20=E1) * (B2:B20=E2), "No match")

2. 在 G2 中輸入公式後,按 Enter 鍵。篩選後的數據集將從 G2 開始顯示在溢出區域中。當您更改 E1 或 E2 中的值時,篩選列表會立即刷新。

此公式示例假設您的主要數據在 A2:C20 區域內,並且篩選條件輸入在 E1(匹配 A 列)和 E2(匹配 B 列)中。如果您只想根據一列進行篩選,則可以相應地簡化邏輯條件。如果沒有符合輸入條件的行,則會顯示“未匹配”消息。

提示:FILTER 函數可用於 Microsoft 365 和某些版本的 Microsoft 19+。對於較舊的 Excel 版本,通過公式實現動態篩選較為複雜,您可以探索輔助列結合傳統的自動篩選或高級篩選功能。請檢查您的版本以確保兼容性。

使用此解決方案時,結果將佔用工作表上的新區域,這有助於保留原始數據。但是,原始數據集不會受到影響——篩選僅應用於顯示的結果,而不影響源數據的顯示狀態。

潛在錯誤:如果您看到 #NAME?#SPILL! 錯誤,請檢查您是否使用的是兼容的 Excel 版本,並且結果範圍內沒有合併單元格。此外,避免在公式溢出區域放置其他數據,以防止阻塞。


使用 VBA 代碼根據輸入的單元格值自動篩選行

假設您正在處理一個數據集,並希望根據輸入到特定單元格中的條件自動篩選記錄。例如,當您在 E1 和 E2 單元格中填寫所需條件時,工作表上的數據會自動篩選以匹配這些值,如下所示:

a screenshot of filtering rows based on entered value in a cell

要以此方式自動化篩選,您可以設置一個簡單的 VBA 解決方案。每次更新指定篩選單元格中的值時,該方法都會觸發。這對於儀表板、互動式報告或模板尤其有用,用戶期望從中心參數單元格實現動態篩選。

1. 轉到您希望根據輸入的單元格自動篩選行的工作表。

2. 在 Excel 窗口底部的表格標籤上右鍵單擊,然後從上下文菜單中選擇 查看代碼。在出現的 Microsoft Visual Basic for Applications 窗口中,將以下 VBA 代碼粘貼到大面積的空白區域(通常稱為代碼窗口或工作表模塊)中,如下所示:

VBA 代碼:根據輸入的單元格值自動篩選數據

Private Sub Worksheet_Change(ByVal Target As Range)
'Updateby Extendoffice 20160606
   If Target.Address = Range("E2").Address Then
       Range("A1:C20").CurrentRegion.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("E1:E2")
   End If
End Sub

a screenshot showing how to use the VBA code

注意:在此 VBA 代碼中,A1:C20 指的是應用篩選的數據範圍。E2 是您輸入篩選值的單元格(您的目標條件),而 E1:E2 是用作篩選條件的單元格。您可以根據需要修改這些範圍——確保它們準確反映您的具體工作表結構中數據和篩選條件的位置。此外,最好避免合併單元格,並確保數據範圍包含標題(如果需要進行準確篩選)。

3. 現在,在 E1 和/或 E2 單元格中輸入或更改篩選條件。按下 Enter 後,VBA 代碼將自動運行,並篩選指定的數據範圍,僅顯示符合輸入條件的行。

如果在輸入值後篩選似乎不起作用,請確保您的工作簿中已啟用宏功能,並檢查 VBA 代碼中的範圍是否正確匹配您當前的工作表布局。在多用戶場景中,提醒其他人必須啟用宏才能使此功能正常運行。

這種 VBA 方法對於動態參數驅動的儀表板、數據輸入的互動模板或任何手動重新應用篩選條件效率低下的場景特別有利。但是,請注意,如果用戶禁用了宏,可能會遇到問題,並且基於 VBA 的解決方案是特定於添加代碼的文件的。

如果您的場景需要多個用戶頻繁更改條件,且這些用戶可能具有不同的 Excel 安全設置,或者您計劃廣泛共享文件,您可能需要考慮基於公式的替代解決方案或 Excel 插件。


演示:使用 VBA 代碼根據輸入的單元格值自動篩選行

 

根據多個條件或其他特定條件篩選數據,例如按文本長度、區分大小寫等。

當您需要執行更高級的篩選操作時——例如結合多個篩選條件、按文本長度篩選、區分文本大小寫或基於特定時期篩選——Excel 的內建篩選功能可能不夠強大。在這種情況下,Kutools for Excel超級篩選功能提供了一種實用的方法來輕鬆高效地管理複雜的篩選需求。這一功能可幫助您:

  • 跨多列應用多個條件;根據單元格中的字符數篩選數據;
  • 按大寫或小寫文本篩選;根據年、月、日、星期或季度篩選數據

a screenshot of using Kutools for Excel to filter date by multiple criteria

Kutools for Excel:配備超過 300 個實用的 Excel 插件,提供 30 天完全功能免費試用。 立即下載並免費試用!


最佳辦公效率工具

🤖 Kutools AI 助手:基於智能執行方式革新數據分析:智能執行   |  生成代碼  |  創建自訂公式  |  分析數據並生成圖表  |  調用 Kutools 函數
熱門功能查找、標記重複值或識別重複項   |  刪除空行   |  合併列或單元格而不丟失數據   |   四捨五入無需公式 ...
高級 LOOKUP多條件 VLookup    多值 VLookup  |   多表查找   |   模糊查找 ....
高級下拉列表快速創建下拉列表   |  依賴下拉列表   |  多選下拉列表 ....
列管理器添加特定數量的列  |  移動列  |  切換隱藏列的可見狀態  |  比較區域和列 ...
特色功能網格聚焦   |  設計檢視   |   增強編輯欄    工作簿與工作表管理器   |  資源庫(自動文本)   |  日期提取器   |  合併資料   |  加密/解密儲存格    按列表發送電子郵件   |  超級篩選   |   特殊篩選(篩選粗體/斜體/刪除線...) ...
頂級 15 種工具集12 個文本工具添加文本刪除特定字符、...)   |   50+ 圖表 類型甘特圖、...)   |   40+ 實用 公式基於生日計算年齡、...)   |   19 個插入工具插入QR碼根據路徑插入圖片、...)   |   12 個轉換工具金額轉大寫匯率轉換、...)   |   7 個合併與分割工具高級合併行分割儲存格、...)   |   ... 還有更多

使用 Kutools for Excel 提升您的 Excel 技巧,體驗前所未有的高效。 Kutools for Excel 提供超過 300 種高級功能來提高生產力並節省時間。  點擊這裡獲取您最需要的功能...


Office Tab 將標籤式界面帶到 Office,讓您的工作更加輕鬆

  • 在 Word、Excel、PowerPoint、Publisher、Access、Visio 和 Project 中啟用標籤式編輯和閱讀。
  • 在同一窗口的新標籤中打開和創建多個文檔,而不是在新窗口中。
  • 將您的生產力提高 50%,每天為您減少數百次鼠標點擊!