2013-02-26 86 views
0

我在這一天的大部分時間裏一直在努力解決這個問題,並在過程中使用借用的代碼從網絡中幾次崩潰了Excel 2010。Excel高級過濾器 - 過濾具有多個單元格值的表格

我有一個表(見下文),其中有一列稱爲'ID'的唯一值。我也有一個ID列表,例如[2 5 7 8],它們是表格中的子集。我只想顯示與子集中的表項相對應的表項。

我相信這一定是可以做到的,但我限制了VB的技能。

ID A__ B ____  C _ 
1, 1.1, 2.1,  -2.1 
2, 1.2, 2.2,  -2.1 
3, 1.3, 2.3,  -2.1 
4, 1.4, 2.4,  -2.1 
5, 1.5, 2.5,  -2.1 
6, 1.6, 2.6,  -2.1 
7, 1.7, 2.7,  -2.1 
8, 1.8, 2.8,  -2.1 

有人可以提出一個解決方案嗎?

感謝 亞歷克斯

回答

1

沒有必要在VBA來做到這一點。

只需添加另一列並使用以下公式填充它:(假設它從第2行開始,ID在列A中,並且您選擇的ID列表在Sheet2!A1:A10中 - 相應調整)

 
=--NOT(ISERROR(MATCH(A2,Sheet2!$A$1:$A$10,0))) 

向下複製這個公式。對於在列表中具有ID的每一行,此公式都將返回TRUE,否則返回FALSE。現在你只需要應用一個自動過濾器和過濾器來完成! :-)

如果將與您選擇的工作表中該代碼,自動篩選會自動更新:

Private Sub Worksheet_Change(ByVal Target As Range) 
    If Intersect(Target, Me.Range("A1:A10")) Is Nothing Then Exit Sub 

    With Worksheets("Sheet1") 
     .AutoFilterMode = False 
     On Error Resume Next 
     .Range("$A:$C").AutoFilter Field:=3, Criteria1:="1" 
    End With 
End Sub 
+0

這是一個很好的解決方案。我唯一的問題是,如果我對子集進行更改,它不會立即反映在AutoFiltered表中,這可能是災難性的。例如,如果在Sheet2中對該列進行更改,是否有辦法使AutoFilter刷新? – AlexS 2013-02-26 23:05:25

+0

您需要使用重新應用自動篩選器的小型Sheet_Change事件自動執行此操作。 – 2013-02-26 23:11:17

+1

當子集和表格在不佔用相同行的同一張紙上時,得到它的作用---- http://superuser.com/questions/249758/how-to-i-auto-refresh-an-excel-auto-filter - 當數據發生變化時 – AlexS 2013-02-26 23:15:16