2013-04-12 70 views
4

我有一個表,我想通過其中一列中的值過濾行。用於過濾的值存儲在不在表格中的單獨列中。這是我到目前爲止:基於列值的Excel VBA中的過濾器表

Dim table1 As ListObject 
Dim range1 As Range 
Set range1 = ActiveSheet.range("AM23:AM184") 
'get table object 
table1.range.AutoFilter Field:=3, Criteria1:=??? 

我不知道該怎麼投入標準1。我知道它需要是一個數組,我可以將它設置爲像Array(「12」,「2」,「13」),但我需要它相等的值是由範圍1給出的範圍中指定的值。任何幫助將不勝感激。

編輯:我已經能夠通過做range1.Value,然後將變體轉換爲字符串數組我的範圍值到數組中。這不起作用,因爲它只是將我的過濾器設置爲我的數組中的最後一個值。例如,如果我的數組包含ID(「12」,「44」,「13」,「22」),並且我將Criteria1設置爲該數組並運行它,則過濾器只有22個選定的數據,並且取消選擇所有其他數字12,44和13.

+0

你試圖記錄自動篩選到得到一些示例代碼? –

+0

是啊,我得到了上面類似的代碼,但它只是把一個數組對象的Criteria1與我取消選擇作爲數組對象的條目對象 – user972276

+0

我不知道如何手動做到上述問題是問題 – user972276

回答

11

我想通了!我嘗試過重新編碼,但是第一次嘗試時,由於與一行代碼相關聯的行太多,它給了我一個不完整的程序。所以我重新錄製了錄音,給了我整個代碼,結果我錯過了一些東西。這裏是整個代碼:

Dim range1 As range 
Set range1 = ActiveSheet.range("AM23:AM184") 
Dim var1 As Variant 
Dim sArray() As String 
Dim i As Long 
var1 = range1.Value 

ReDim sArray(1 To UBound(var1)) 

For i = 1 To (UBound(var1)) 
    sArray(i) = var1(i, 1) 
Next 

ActiveSheet.ListObjects("Table1").range.AutoFilter Field:=3, Criteria1:=sArray, Operator:=xlFilterValues 

「操作:= xlFilterValues」是我從錄製宏的第一時間,因爲記錄停止過早地錯過了關鍵部分