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

如何基於Excel中的單元格值自動過濾行?

通常,Excel中的“過濾器”功能可以幫助我們根據需要過濾任何數據,但是有時候,我想基於手動單元格輸入自動過濾單元格,這意味著當我在單元格中輸入條件時,數據可以一次自動過濾。 在Excel中有什麼好主意可以處理這項工作嗎?

根據您使用VBA代碼輸入的單元格值自動過濾行

根據多個條件或其他特定條件(例如,文本長度,區分大小寫)過濾數據


根據您使用VBA代碼輸入的單元格值自動過濾行

假設我具有以下數據范圍,現在,當我在單元格E1和E2中輸入條件時,我希望數據將自動過濾,如下圖所示:

doc自動篩選器1

1。 轉到要根據輸入的單元格值自動過濾日期的工作表。

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

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

doc自動篩選器2

備註:在上面的代碼中, A1:C20 是您要過濾的數據范圍, E2 是您要基於其過濾的目標值,並且 E1:E2 是您的條件單元格將基於過濾的條件。 您可以根據需要更改它們。

3。 現在,當您在單元格中輸入條件時 E1E2 並按下 Enter 鍵,您的數據將自動被單元格值過濾。


根據多個條件或其他特定條件(例如,文本長度,區分大小寫)過濾數據

根據多個條件或其他特定條件(例如,文本長度,區分大小寫等)過濾數據。

Excel的Kutools超級濾鏡 該功能是一個功能強大的實用程序,您可以應用此功能來完成以下操作:

  • 使用多個條件過濾數據; 按文本長度過濾數據;
  • 按大小寫過濾數據; 按年/月/日/週/季度過濾日期

Excel的Kutools:具有300多個方便的Excel加載項,可以在30天內免費試用,沒有任何限制。 立即下載並免費試用!


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


最佳辦公效率工具

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)
還沒有評分。 成為第一位評論!
網站主持人對此評論進行了最小化
非常感謝您提供上述公式 - 效果很好。
網站主持人對此評論進行了最小化
我一直在嘗試使用各種代碼(取自各種站點,包括這個)過濾工作表,但似乎沒有一個有效。 在單元格範圍 A101:EF999(是的,大的)中包含信息的工作表中,我想根據輸入到單元格 B5 中的三個字母代碼自動過濾工作表,該代碼應對應於 B101 列中具有相同代碼的行-B999。 示例片段如下所示: ABCDE 5 ABC ... 101 ABC 102 DEF 103 GHI 104 ABC 105 JKL 106 ABC 107 DEF 在單元格 B5 中選擇“ABC”時,應僅顯示第 101、104 和 106 行,但什麼也沒有發生。 有什麼我在這裡忽略的嗎? 任何幫助將非常感激!
網站主持人對此評論進行了最小化
如何撤消它?它隱藏了我的所有數據。
網站主持人對此評論進行了最小化
嗨,下面的代碼完美運行。 但是,如果我想取消過濾,如何禁用宏? 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
網站主持人對此評論進行了最小化
在 Range("E2").Address 中刪除任何輸入。 所有人都將“取消過濾”。
網站主持人對此評論進行了最小化
對我不起作用,可能是我有 Office 2010? 什麼都不做:S
網站主持人對此評論進行了最小化
謝謝你寫這篇文章! 我正在嘗試調整代碼以允許接受範圍。

示例:我輸入 5,它會過濾並僅顯示 5 的 5 以內的所有內容(因此 4.5 到 5.5)
網站主持人對此評論進行了最小化
它的工作和可怕...謝謝
網站主持人對此評論進行了最小化
感謝您提供此代碼。 我一直在嘗試修改它以更好地為我工作,但遇到了困難。

我的工作表有來自 A2:G2280 A 列的數據包含街道名稱。 我希望能夠將至少部分街道名稱輸入 A1 並僅顯示全部或部分包含 A1 的數據。 因此,如果我在 A1 中鍵入 Bro,我會看到有 Broad、Broadway 和 Brook 的行。 當然,如果 A1 為空白,我會看到所有內容。



抱歉,我不流利地使用 Excel VBA 術語,我只是一個 911 調度員,知道他們是一種更簡單的方法。



謝謝。



馬可福音
網站主持人對此評論進行了最小化
你好,馬克,
要解決您的問題,請應用以下 VBA 代碼:
注意:在下面的代碼中,A1 是您要輸入條件的單元格,A2:D20 是數據范圍,A 是包含您要過濾的條件的列,請將單元格引用更改為您自己的.

Private Sub Worksheet_Change(ByVal Target As Range)
將 xRg 調暗為範圍
將 xRRg 調暗為範圍
將 xFNum 調暗為整數
在錯誤恢復下一頁
If Target.Address <> Range("A1").Address Then Exit Sub
設置 xRg = Range("A2:D20").CurrentRegion
Application.ScreenUpdating = False
如果 Target.Text = "" 那麼
xRg.Rows.Select
選擇.EntireRow.Hidden = 假
Application.ScreenUpdating = True
退出小組
如果結束
對於 xFNum = 1 到 xRg.Rows.Count
設置 xRRg = xRg.Range("A" & xFNum)
xRRg.Rows.Select
如果 InStr(xRRg.Text, Target.Text) > 0 那麼
選擇.EntireRow.Hidden = 假
其他
選擇.EntireRow.Hidden = True
如果結束
下一個 xFNum
Application.ScreenUpdating = True
END SUB

請嘗試一下,希望對您有所幫助!
網站主持人對此評論進行了最小化
感謝您的幫助。
我將 A2:D20 更改為 A3:G2281 以表示我的數據字段。 現在,當我在單元格 A1 中鍵入任何內容時,單元格行 2-109 中的選項卡將被隱藏。 它不會過濾和僅顯示包含在單元格 A1 中輸入的全部或部分內容的行。



有什麼想法?
網站主持人對此評論進行了最小化
嗨,天陽,
您的代碼運行良好,但我有一個問題:如果我不想在單元格 A1 中設置過濾條件並將單元格留空,它將不再顯示任何行。 所以一切都被過濾掉了。 就像馬克想要“當然,如果 A1 是空白的,我會看到所有內容”它不起作用,不是嗎?
如果你能幫助我就好了。
問候
卡斯滕
網站主持人對此評論進行了最小化
嗨,天陽,
您的代碼運行良好,但我有一個問題:如果我不想在單元格 A1 中設置過濾條件並將單元格留空,它將不再顯示任何行。 所以一切都被過濾掉了。 就像馬克想要“當然,如果 A1 是空白的,我會看到所有內容”它不起作用,不是嗎?
如果你能幫助我就好了。
問候
卡斯滕
網站主持人對此評論進行了最小化
嗨,卡斯滕,
將單元格 A1 留空時,將顯示所有數據行,當輸入要過濾的任何字符時,它將正常工作。 您的問題如何,請在此處插入您的問題表作為屏幕截圖。

感謝您!
查看附件 (1 / 5)
網站主持人對此評論進行了最小化
例如,如果您有 GRADE11 和 GRADE12,會發生什麼情況。 如果您嘗試過濾,過濾器是否也會顯示這些
在 GRADE1 上?
網站主持人對此評論進行了最小化
你好,鮑勃,
是的,正如您所說,當輸入要過濾的部分文本時,所有包含該部分文本的單元格都將被過濾掉。 所以,如果你輸入Grade1,所有包含Grade1、Grade11、Grage123...的單元格都會被過濾掉。
網站主持人對此評論進行了最小化
VB 腳本運行良好。 非常感謝你的帖子!
網站主持人對此評論進行了最小化
Private Sub Worksheet_Change(ByVal Target As Range)
'更新通過 Extendoffice 20160606
If Target.Address = Range("E2").Address Then
Range("A1:C20").CurrentRegion.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("E1:E2")
如果結束
END SUB


E2 HUCRESI YERINE E SUTUNUNUNA YAZILAN SON SATIRA GORE FILITRELEME YAPABILIR MI


根據上面的代碼,是否可以根據寫入的數據過濾到E列的最後一行?


我希望得到幫助並感謝您的幫助
網站主持人對此評論進行了最小化
嗨,穆拉特,
上面的代碼在整個工作表中運行良好,您只需根據需要更改單元格引用。 請嘗試一下,謝謝!
網站主持人對此評論進行了最小化
我不知道如何更改單元格引用。
網站主持人對此評論進行了最小化
有沒有辦法讓它繼續用額外的盒子過濾。 當我把它寫成 ElseIf 時,它只遵循 ElseIf 命令。
網站主持人對此評論進行了最小化
所以我有一堆值,然後是一個數據表。 我想知道是否可以根據類似於上面解釋的值過濾該表。 例如,我想單擊一個值為 3 的單元格,它對應於滿足條件的 3 條記錄(200 行,25 列),然後過濾我的表格以僅顯示這些記錄。 一個條件的例子是,如果一個變量大於 100。我有超過 100 個這些條件,這就是為什麼我希望我的表以某種方式鏈接到它。 任何幫助將非常感激。 在您提供的示例中,如果您只想要 3、6、9、12 歲以上的所有年齡,然後您有 25 個類似的變量,這將類似於。因此,要過濾表格以僅顯示年齡超過 3 歲的記錄,只需單擊列表中的值,例如年齡> 3 - 2 條記錄、年齡> 6 - 4 條記錄等
網站主持人對此評論進行了最小化
說明中可能有錯誤。 與其將代碼粘貼到空白模塊中,不如將其粘貼到工作表窗口中。 例如,如果宏要在 Sheet1 上工作,則應將代碼粘貼到 Microsoft Excel 對象 -> Sheet1(Sheet1) 中。 只有這樣它才能在 Excel 2016 上為我工作。

感謝您的代碼!
網站主持人對此評論進行了最小化
嗨,mjr,
這篇文章沒有錯,文章說,你應該把VBA代碼放到工作表模塊中,右鍵單擊工作表名稱,然後選擇查看代碼進入模塊。
但是,您的操作也是正確的。
感謝您的評論。
網站主持人對此評論進行了最小化
你好,

如果我在同一個工作簿的不同選項卡(表 2)中獲取過濾後的數據,並且過濾器需要引用的單元格在第一個選項卡(表 1)中,該怎麼辦。 我使用了這個 VBA,但不是那樣工作,只有當我在同一個選項卡中同時擁有標准單元格(此 VBA 中的 E2)和過濾後的數據(A1:C20)
網站主持人對此評論進行了最小化
大家好,
完美的解釋,非常感謝。
1 小問題:如果我想使用 2,3 4 個或更多標准進行過濾,我該怎麼做?
例如,我想說我想看名字亨利,1年級和這個年齡......所以不僅僅是1個標準,而是例如3..=?


感謝您的回复


親切的問候,


TIM
網站主持人對此評論進行了最小化
嗨,蒂姆,
要根據多個條件自動過濾數據,您應該應用以下代碼:(請根據需要更改單元格引用)

Private Sub Worksheet_Change(ByVal Target As Range)
'更新 Extendoffice
將 xVStr 調暗為字符串
將 xFStr 調暗為字符串
xVStr = "E22:G22" '您要過濾的條件
xFStr = "E21:G22" '範圍包含條件的標題
If Not (Intersect(Range(xVStr), Target) Is Nothing) 那麼
Range("A1:C17").CurrentRegion.AdvancedFilter Action:=xlFilterInPlace, _
標準範圍:=範圍(xFStr)
如果結束
END SUB


請嘗試,希望對您有所幫助!
網站主持人對此評論進行了最小化
謝謝你,這真的很有幫助。 我只有一個問題,在下拉菜單中選擇名稱後(我有名稱作為標準),它只顯示具有該名稱的人,因為它應該,但是在我選擇了一個名稱後我該怎麼做,然後我想看看我表的所有行嗎?

希望你能幫幫我。

親切的問候
網站主持人對此評論進行了最小化
嗨,彼得,
這段代碼非常適合整行數據,你能正確輸入你的表格範圍嗎?

A1:C20 是您的數據范圍,E1:E2 是標準範圍。
Range("A1:C20").CurrentRegion.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("E1:E2")
查看附件 (1 / 5)
網站主持人對此評論進行了最小化
非常感謝你。 它在一定程度上對我有用,請讓我解釋一下:

我的工作簿中有多個表格。 當我應用上面的代碼時,它只適用於一個表,但不適用於其他兩個表。 假設第一個表,如您的示例,來自 A1:C20。 第二個表來自 A22:C40。 第三個來自 A42:C60。 所有表都有關於“等級”的信息,但是它們有不同的列和日期,因此不能合併到一個大表中,而是合併到 3 個較小的表中。

如果我輸入標準:“Grade1”,那麼代碼將如何需要,所有 3 個表都將被自動過濾為“Grade1”?

非常感謝你提前。

最好的問候
網站主持人對此評論進行了最小化
你好,

感謝您提供的精彩內容,但是我遇到了一些問題,想知道您是否有任何想法。

我已經調整了我的範圍,所以我的代碼如下:

子自動過濾器()
If Target.Address = Range("E13:F14").Address Then
Worksheets('Data Archive').Range("A1:C20").CurrentRegion.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Range("F10:F1048576")
如果結束
END SUB


但是,當我運行宏時,會出現“編譯錯誤:語法錯誤”消息。

謝謝你在前進

斯坦
網站主持人對此評論進行了最小化
你好,斯坦,
您在代碼中正確設置了數據范圍和條件範圍嗎?或者您可以將您的數據范圍作為屏幕截圖。
感謝您!
網站主持人對此評論進行了最小化
您好,有沒有辦法快速修改 VBA 代碼以過濾大於所選單元格的值?
這裡還沒有評論
載入更多
留下你的意見
以訪客身份發帖
×
評價此帖子:
0   字符
推薦地點

關注我們

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