Как отфильтровать уже отфильтрованные значения таблице Excel - VBA
Формулировка задачи:
Привет.
С помошью команды:
автоматически отфильтровал по первому полю таблицу с данными (UsedRange) по значению из массива filter.
А теперь как мне из этого отфильтрованного объема данных отфильтровать дополнительно но уже по другому полю (например №2)?
Решение задачи: «Как отфильтровать уже отфильтрованные значения таблице 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д