Как отфильтровать уже отфильтрованные значения таблице Excel - VBA
Формулировка задачи:
Привет.
С помошью команды:
автоматически отфильтровал по первому полю таблицу с данными (UsedRange) по значению из массива filter.
А теперь как мне из этого отфильтрованного объема данных отфильтровать дополнительно но уже по другому полю (например №2)?
Листинг программы
- Workbooks("file.xls").Worksheets("Sheet1").UsedRange.AutoFilter Field:=1, Criteria1:=filter, Operator:=xlFilterValues
Решение задачи: «Как отфильтровать уже отфильтрованные значения таблице Excel»
textual
Листинг программы
- Sub Procedure_1()
- Dim mySheet As Excel.Worksheet
- Dim myAutFilter As Excel.AutoFilter
- Dim mySingleFilter As Excel.Filter
- Dim myArray() As Variant
- Dim i As Long
- '1. Даём VBA-имя "mySheet" активному листу для удобства написания кода:
- 'когда будем ставить точку, то будет появляться список членов.
- Set mySheet = ActiveSheet
- '2. Даём VBA-имя автофильтру, который есть на активном листе.
- Set myAutFilter = mySheet.AutoFilter
- '3. Автофильтр состоит из нескольких столбцов Excel-листа.
- 'Входит столбец в автофильтр или нет, можно посмотреть
- 'по наличие кнопки-стрелки в столбце.
- 'Дадим VBA-имя "mySingleFilter" первому столбцу в автофильтре.
- Set mySingleFilter = myAutFilter.Filters(1)
- '4. Смотрим, выбирал ли пользователь чего-нибудь.
- If mySingleFilter.On = False Then
- 'Если ничего не выбирал.
- 'Выводим результат в View - Immediate Window.
- Debug.Print "Пользователь ничего не выбрал."
- 'Выходим из процедуры.
- Exit Sub
- End If
- '5. Выводим параметры фильтра.
- 'Узнаём, сколько пунктов выбрано в фильтре
- '(это флажки в программе "Excel" в автофильтре).
- '5.1. Если выбран один флажок, то данные берутся из свойства "Criteria1".
- 'Параметр "Criteria2" не существует.
- If mySingleFilter.Count = 1 Then
- Debug.Print mySingleFilter.Criteria1
- '5.2. Если выбрано два флажка, то данные берутся
- 'из свойств "Criteria1" и "Criteria2".
- ElseIf mySingleFilter.Count > 0 And mySingleFilter.Count < 3 Then
- Debug.Print mySingleFilter.Criteria1
- Debug.Print mySingleFilter.Criteria2
- '5.3. Если выбрано более двух флажков, то "Criteria1" возвращает
- 'массив данных, а "Criteria2" не существует.
- ElseIf mySingleFilter.Count > 2 Then
- myArray() = mySingleFilter.Criteria1
- For i = 1 To UBound(myArray) Step 1
- Debug.Print myArray(i)
- Next i
- End If
- End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д