2013-02-17 2 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)" вместо значения поля i-2 массива a.

Изменить .AutoFilter 2, "=a(i-2)" на .AutoFilter 2, "=" & a(i-2), и проблема исчезнет.

+0

У меня есть еще один запрос, есть ли способ, чтобы я мог применить автофильтр только к уникальным значениям столбца? – Praveenks

+0

Я не знаю, какой прямой способ выбрать AutoFilter только уникальные значения. Однако вы можете добавить еще один столбец с формулой '= COUNTIF (B: B, INDIRECT (« B »и ROW())), а затем установить фильтр для всех строк, где значение этого столбца равно 1. –

Смежные вопросы