Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Массив критериев в автофильтр - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Массив критериев в автофильтр (Макросы/Sub)
Массив критериев в автофильтр
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]
Не работает совсем.

Как починить неработающий фильтр? :)
Буду признателен!


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
Репутация: 898 ±
Замечаний: 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()


ЯД: 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, Благодарю. Работает. Буду знать! :)


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]


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
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Массив критериев в автофильтр (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!