2013-12-13 48 views
0

我的Excel文件中有三列當前正在被自動過濾。我一直負責設置多個過濾器。我開始的方式是使用ActiveX複選框創建一個「菜單」選項,並將「鏈接單元格」屬性分配給右側的單元格。所以,如果第一個選項被選中,單元格BB30表示'真'。Excel 2010 Select Case with ActiveX複選框

問題始於第一列有16個項目,第二個列有11個項目,第三個列有5個。我的老闆想要它的工作方式是如果他們從第1列和第1列中選擇2個選項來自第2列的項目,它會過濾該信息上的數據(在單獨的表格上)。

示例數據:

Column A   Column B    Column C 
--------   --------    -------- 
aCol1    bCol1    cCol1 
aCol2    bCol2    cCol2 
aCol3    bCol3    cCol3 
aCol4    bCol4    cCol4 
aCol5    bCol5    cCol5 
aCol6    bCol6 
aCol7    bCol7 
aCol8    bCol8 
etc.    etc. 

所以,如果我選擇aCol1aCol2bCol3 - 我們要過濾(ACOL1 = 'true' 或ACOL2 = 'TRUE')AND BCOL3 = 'TRUE'然後過濾數據。

我做了一些搜索,似乎使用SELECT CASE是的路要走,但這會給我800多個不同的場景......如果選擇從某列沒有(只aCol1bCol8選擇不提,例如)。

有沒有更好的方法來做到這一點?

如果我必須寫一個單獨的CASE語句每個場景,將Excel 2010的手柄,許多?

最後,一旦我決定什麼都已經選擇了,我怎麼寫VBA所以它實際嗎?

回答

0

不要寫入選擇塊。

你想要做的就是通過每列迭代,如果該值是true,則與相關值添加一個自動篩選。您可以爲每列執行此操作,並按照您的要求進行過濾。

至於如何做到這一點使用VBA,你可以簡單的使用範圍,並調用AutoFilter()方法與篩選值。我假設你對VBA有最少的瞭解。

Range("A1:Dx").AutoFilter Field:=x, Value:=x