Как отфильтровать уже отфильтрованные значения таблице Excel - VBA

Узнай цену своей работы

Формулировка задачи:

Привет. С помошью команды:
Листинг программы
  1. Workbooks("file.xls").Worksheets("Sheet1").UsedRange.AutoFilter Field:=1, Criteria1:=filter, Operator:=xlFilterValues
автоматически отфильтровал по первому полю таблицу с данными (UsedRange) по значению из массива filter. А теперь как мне из этого отфильтрованного объема данных отфильтровать дополнительно но уже по другому полю (например №2)?

Решение задачи: «Как отфильтровать уже отфильтрованные значения таблице Excel»

textual
Листинг программы
  1. Sub Procedure_1()
  2.    
  3.     Dim mySheet As Excel.Worksheet
  4.     Dim myAutFilter As Excel.AutoFilter
  5.     Dim mySingleFilter As Excel.Filter
  6.     Dim myArray() As Variant
  7.     Dim i As Long
  8.    
  9.     '1. Даём VBA-имя "mySheet" активному листу для удобства написания кода:
  10.        'когда будем ставить точку, то будет появляться список членов.
  11.    Set mySheet = ActiveSheet
  12.    
  13.     '2. Даём VBA-имя автофильтру, который есть на активном листе.
  14.    Set myAutFilter = mySheet.AutoFilter
  15.    
  16.     '3. Автофильтр состоит из нескольких столбцов Excel-листа.
  17.    'Входит столбец в автофильтр или нет, можно посмотреть
  18.        'по наличие кнопки-стрелки в столбце.
  19.    'Дадим VBA-имя "mySingleFilter" первому столбцу в автофильтре.
  20.    Set mySingleFilter = myAutFilter.Filters(1)
  21.    
  22.     '4. Смотрим, выбирал ли пользователь чего-нибудь.
  23.    If mySingleFilter.On = False Then
  24.         'Если ничего не выбирал.
  25.        'Выводим результат в View - Immediate Window.
  26.        Debug.Print "Пользователь ничего не выбрал."
  27.         'Выходим из процедуры.
  28.        Exit Sub
  29.     End If
  30.    
  31.     '5. Выводим параметры фильтра.
  32.    
  33.     'Узнаём, сколько пунктов выбрано в фильтре
  34.        '(это флажки в программе "Excel" в автофильтре).
  35.    
  36.     '5.1. Если выбран один флажок, то данные берутся из свойства "Criteria1".
  37.        'Параметр "Criteria2" не существует.
  38.    If mySingleFilter.Count = 1 Then
  39.         Debug.Print mySingleFilter.Criteria1
  40.     '5.2. Если выбрано два флажка, то данные берутся
  41.        'из свойств "Criteria1" и "Criteria2".
  42.    ElseIf mySingleFilter.Count > 0 And mySingleFilter.Count < 3 Then
  43.    
  44.         Debug.Print mySingleFilter.Criteria1
  45.         Debug.Print mySingleFilter.Criteria2
  46.        
  47.     '5.3. Если выбрано более двух флажков, то "Criteria1" возвращает
  48.        'массив данных, а "Criteria2" не существует.
  49.    ElseIf mySingleFilter.Count > 2 Then
  50.    
  51.         myArray() = mySingleFilter.Criteria1
  52.            
  53.         For i = 1 To UBound(myArray) Step 1
  54.            
  55.             Debug.Print myArray(i)
  56.            
  57.         Next i
  58.        
  59.     End If
  60.    
  61. End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.167 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы