# #分享 Excel篩選功能如何以儲存格作為篩選依據
> [color=#40f1ef][name=LHB阿好伯, 2020/04/25 ][:earth_africa:](https://www.facebook.com/LHB0222/)
###### tags: `Excel`
[TOC]
紀錄一下這幾天在Telegran的討論群中解決的問題
在Excel中有一個非常好用的篩選功能
正常來說使用上是只需要勾選所需資料類型就可以進行篩選
這次遇到情況是希望能以特定儲存格鍵入資料作為篩選依據
範例如下:
![](https://i.imgur.com/52eMzlb.gif)
在說明解法前先說明內建功能中也可以已鍵入資料的方式進行篩選
最主要方式是可以進行文字篩選
![](https://i.imgur.com/jd3kfCB.gif)
則這次解決方式主要透過Excel VBA進行處理
![](https://i.imgur.com/is4qHzK.png)
```cpp=
Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Columns("A:B").AutoFilter Field:=1, Criteria1:=Range("C1") '篩選依據
End Sub
```
這段程式碼主要利用`Worksheet.change`當使用者或外部連結變更工作表中的儲存格時會自動執行後續程式碼
再搭配上自動篩選`Range.AutoFilter`的程式碼進行修改所達成
`Field`則是篩選的基準之欄位
`Criteria1`則為篩選的依據
上述程式碼主要是在同一活頁簿下作業
在後來提出若是將原本工作表1中的篩選依據儲存格放置於工作表2中
若要達成則需要修改其中的`ActiveSheet`使用中活頁簿
改成`Worksheets("工作表1")`指定的活頁簿名稱
並將程式碼放置於工作表2的project中
![](https://i.imgur.com/Myqigmx.png)
```cpp=
Private Sub Worksheet_Change(ByVal Target As Range)
Worksheets("工作表1").Range("A:B").AutoFilter Field:=1, Criteria1:=Worksheets("工作表2").Range("A1") '篩選依據
End Sub
```
![](https://i.imgur.com/Serkprg.gif)
# 參考資料
> [Worksheet.change 方法 (Excel)](https://docs.microsoft.com/zh-tw/office/vba/api/excel.worksheet.change)
> [Range.AutoFilter 方法 (Excel)\](https://docs.microsoft.com/zh-tw/office/vba/api/excel.range.autofilter)
> [Application.ActiveSheet 屬性 (Excel)](https://docs.microsoft.com/zh-tw/office/vba/api/excel.application.activesheet)
全文分享至
https://www.facebook.com/LHB0222/
有疑問想討論的都歡迎於下方留言
喜歡的幫我分享給所有的朋友 \o/
有所錯誤歡迎指教
![](https://i.imgur.com/47HlvGH.png)
<style>
html, body, .ui-content {
background-color: #333;
color: #ddd;
}
body > .ui-infobar {
display: none;
}
.ui-view-area > .ui-infobar {
display: block;
}
.markdown-body h1,
.markdown-body h2,
.markdown-body h3,
.markdown-body h4,
.markdown-body h5,
.markdown-body h6 {
color: #ddd;
}
.markdown-body h1,
.markdown-body h2 {
border-bottom-color: #ffffff69;
}
.markdown-body h1 .octicon-link,
.markdown-body h2 .octicon-link,
.markdown-body h3 .octicon-link,
.markdown-body h4 .octicon-link,
.markdown-body h5 .octicon-link,
.markdown-body h6 .octicon-link {
color: #fff;
}
.markdown-body img {
background-color: transparent;
}
.ui-toc-dropdown .nav>.active:focus>a, .ui-toc-dropdown .nav>.active:hover>a, .ui-toc-dropdown .nav>.active>a {
color: white;
border-left: 2px solid white;
}
.expand-toggle:hover,
.expand-toggle:focus,
.back-to-top:hover,
.back-to-top:focus,
.go-to-bottom:hover,
.go-to-bottom:focus {
color: white;
}
.ui-toc-dropdown {
background-color: #333;
}
.ui-toc-label.btn {
background-color: #191919;
color: white;
}
.ui-toc-dropdown .nav>li>a:focus,
.ui-toc-dropdown .nav>li>a:hover {
color: white;
border-left: 1px solid white;
}
.markdown-body blockquote {
color: #bcbcbc;
}
.markdown-body table tr {
background-color: #5f5f5f;
}
.markdown-body table tr:nth-child(2n) {
background-color: #4f4f4f;
}
.markdown-body code,
.markdown-body tt {
color: #eee;
background-color: rgba(230, 230, 230, 0.36);
}
a,
.open-files-container li.selected a {
color: #5EB7E0;
}
</style>