Массив критериев в автофильтр
akobir
Дата: Пятница, 18.09.2015, 13:39 |
Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 201
Репутация:
9
±
Замечаний:
0% ±
Excel 2010
Добрый день! При вставке автофильтра возник вопрос. У меня несколько параметров, которые определены в переменную, заданную как Variant. В фильтре хочу использовать сразу все критерии. Осталось понять - как это сделать? Вставляю часть кода: [vba]Код
Dim valuearr As Variant ... ... valuearr = ThisWorkbook.Sheets("Рабочий").Range("F4:F" & n + 1) ... ... Workbooks(file_name).Sheets(list_name).Range("$A$1:" & last_add).AutoFilter Field:=5, Criteria1:=valuearr
[/vba] В этом случае использует фильтр только по одному (последнему) критерию. Пробовал сделать [vba]Код
Workbooks(file_name).Sheets(list_name).Range("$A$1:" & last_add).AutoFilter Field:=5, Criteria1:=Array(valuearr)
[/vba] Не работает совсем. Как починить неработающий фильтр? Буду признателен!
Добрый день! При вставке автофильтра возник вопрос. У меня несколько параметров, которые определены в переменную, заданную как Variant. В фильтре хочу использовать сразу все критерии. Осталось понять - как это сделать? Вставляю часть кода: [vba]Код
Dim valuearr As Variant ... ... valuearr = ThisWorkbook.Sheets("Рабочий").Range("F4:F" & n + 1) ... ... Workbooks(file_name).Sheets(list_name).Range("$A$1:" & last_add).AutoFilter Field:=5, Criteria1:=valuearr
[/vba] В этом случае использует фильтр только по одному (последнему) критерию. Пробовал сделать [vba]Код
Workbooks(file_name).Sheets(list_name).Range("$A$1:" & last_add).AutoFilter Field:=5, Criteria1:=Array(valuearr)
[/vba] Не работает совсем. Как починить неработающий фильтр? Буду признателен! akobir
e-mail: akobir.ismailov@gmail.com
Сообщение отредактировал akobir - Пятница, 18.09.2015, 13:39
Ответить
Сообщение Добрый день! При вставке автофильтра возник вопрос. У меня несколько параметров, которые определены в переменную, заданную как Variant. В фильтре хочу использовать сразу все критерии. Осталось понять - как это сделать? Вставляю часть кода: [vba]Код
Dim valuearr As Variant ... ... valuearr = ThisWorkbook.Sheets("Рабочий").Range("F4:F" & n + 1) ... ... Workbooks(file_name).Sheets(list_name).Range("$A$1:" & last_add).AutoFilter Field:=5, Criteria1:=valuearr
[/vba] В этом случае использует фильтр только по одному (последнему) критерию. Пробовал сделать [vba]Код
Workbooks(file_name).Sheets(list_name).Range("$A$1:" & last_add).AutoFilter Field:=5, Criteria1:=Array(valuearr)
[/vba] Не работает совсем. Как починить неработающий фильтр? Буду признателен! Автор - akobir Дата добавления - 18.09.2015 в 13:39
Manyasha
Дата: Пятница, 18.09.2015, 15:13 |
Сообщение № 2
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация:
902
±
Замечаний:
0% ±
Excel 2010, 2016
akobir , вот так попробуйте: [vba]Код
Dim valuearr() x = 4 For i = x To n + 1 ReDim Preserve valuearr(0 To i - x) valuearr(i - x) = ThisWorkbook.Sheets("Рабочий").Range("F" & i).Text Next i Workbooks(file_name).Sheets(list_name).Range("$A$1:" & last_add).AutoFilter Field:=5, Criteria1:=valuearr, Operator:=xlFilterValues
[/vba] Массив критериев должен быть типа String, так что у Range значения нужно брать методом Text, ну или приводить тип к строковому с помощью CStr()
akobir , вот так попробуйте: [vba]Код
Dim valuearr() x = 4 For i = x To n + 1 ReDim Preserve valuearr(0 To i - x) valuearr(i - x) = ThisWorkbook.Sheets("Рабочий").Range("F" & i).Text Next i Workbooks(file_name).Sheets(list_name).Range("$A$1:" & last_add).AutoFilter Field:=5, Criteria1:=valuearr, Operator:=xlFilterValues
[/vba] Массив критериев должен быть типа String, так что у Range значения нужно брать методом Text, ну или приводить тип к строковому с помощью CStr()Manyasha
ЯД: 410013299366744 WM: R193491431804
Ответить
Сообщение akobir , вот так попробуйте: [vba]Код
Dim valuearr() x = 4 For i = x To n + 1 ReDim Preserve valuearr(0 To i - x) valuearr(i - x) = ThisWorkbook.Sheets("Рабочий").Range("F" & i).Text Next i Workbooks(file_name).Sheets(list_name).Range("$A$1:" & last_add).AutoFilter Field:=5, Criteria1:=valuearr, Operator:=xlFilterValues
[/vba] Массив критериев должен быть типа String, так что у Range значения нужно брать методом Text, ну или приводить тип к строковому с помощью CStr()Автор - Manyasha Дата добавления - 18.09.2015 в 15:13
akobir
Дата: Пятница, 18.09.2015, 15:34 |
Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 201
Репутация:
9
±
Замечаний:
0% ±
Excel 2010
Manyasha , Благодарю. Работает. Буду знать!
Manyasha , Благодарю. Работает. Буду знать! akobir
e-mail: akobir.ismailov@gmail.com
Ответить
Сообщение Manyasha , Благодарю. Работает. Буду знать! Автор - akobir Дата добавления - 18.09.2015 в 15:34
KSV
Дата: Суббота, 19.09.2015, 00:06 |
Сообщение № 4
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация:
255
±
Замечаний:
0% ±
Excel 2013
Можно чуть проще [vba]Код
Dim valuearr() valuearr = WorksheetFunction.Transpose(ThisWorkbook.Sheets("Рабочий").Range("F4:F" & n + 1).Formula) Workbooks(file_name).Sheets(list_name).Range("$A$1:" & last_add).AutoFilter Field:=5, Criteria1:=valuearr, Operator:=xlFilterValues
[/vba]
Можно чуть проще [vba]Код
Dim valuearr() valuearr = WorksheetFunction.Transpose(ThisWorkbook.Sheets("Рабочий").Range("F4:F" & n + 1).Formula) Workbooks(file_name).Sheets(list_name).Range("$A$1:" & last_add).AutoFilter Field:=5, Criteria1:=valuearr, Operator:=xlFilterValues
[/vba] KSV
KSV.VBA@gmail.com Яндекс.Деньги: 410011921213333
Ответить
Сообщение Можно чуть проще [vba]Код
Dim valuearr() valuearr = WorksheetFunction.Transpose(ThisWorkbook.Sheets("Рабочий").Range("F4:F" & n + 1).Formula) Workbooks(file_name).Sheets(list_name).Range("$A$1:" & last_add).AutoFilter Field:=5, Criteria1:=valuearr, Operator:=xlFilterValues
[/vba] Автор - KSV Дата добавления - 19.09.2015 в 00:06