2013-02-17 38 views
1

我正在檢索特定列的所有值並將所有值存儲在數組中,以便我可以使用這些值應用自動篩選器。使用數組在列上應用自動篩選器值

rowcount=objExcel.Activeworkbook.Sheets(1).UsedRange.Rows.count 

Dim a() 
Redim Preserve a(rowcount) 
'msgbox rowcount 

'Storing all column values in an array' 

for i=2 to rowcount 
    a(i-2) = objSrcWorksheet.Cells(i,7).Value 
Next 

'Checking values of array' 
for i=2 to rowcount 
    msgbox a(i-2) 

'Applying Autofilter' 
With objSrcWorksheet 


.Range("G1").AutoFilter 2,"=a(i-2)" 'Problem is here' 
'.Range("G1").AutoFilter 2,"=2"  'While hardcoded values are working' 

End With 
Next 

回答

1

VBScript不解析字符串內的變量。當您將a(i-2)放在雙引號中時,它將成爲字符串"a(i-2)"而不是數組a的字段i-2的值。

.AutoFilter 2, "=a(i-2)"更改爲.AutoFilter 2, "=" & a(i-2)問題就會消失。

+0

我有一個更多的查詢,有沒有什麼辦法,以便我可以應用autofilter只有獨特的列值? – Praveenks 2013-02-17 16:57:43

+0

我不知道有任何直接的方法讓AutoFilter只選擇唯一值。但是,您可以使用公式'= COUNTIF(B:B,INDIRECT(「B」&ROW()))'添加另一列,然後爲該列的值爲1的所有行設置一個過濾器。 – 2013-02-17 17:14:15

相關問題