Я хочу использовать несколько (5) флажков для фильтрации одного столбца в таблице Excel.Фильтруемый столбец содержит несколько маркеров, а именно
"","r","x","s","t"
Вот изображение коробок:
Моя цель - отметить несколько полейи включите все столбцы с указанным маркером.Использование простых методов приводит к тому, что предыдущий фильтр очищается вместо того, чтобы быть «добавленным».
Здесь изображение моих (теперь двух) столбцов отслеживания, один из которых содержит идентификатор, а другой скрытый, преобразующий также заголовки флажка с помощью ifs
операторов, так что решение @ zac работает. 
Я много раз осмотрелся и нашел на MrExcel ветку, где был предоставлен какой-то код, однако я не смог его адаптировать кмои точные потребности.К сожалению, какая бы кнопка не нажималась, она по умолчанию остается пустой ("").
Ниже приведен мой код для саба, который должен вызываться каждым флажком.
Справочная информация:
Значение идентификатора определено в таблице и ему присвоен динамический именованный диапазон "tracking"
Фильтруемый столбец называется ("Project Flag")
Код содержится в отдельном модуле.
Sub Project_Filter()
Dim objcBox As Object
Dim cBox As Variant
Set Dbtbl = Sheets("Database").ListObjects("Entire")
ReDim cBox(0)
Dim trackers() As String
Dim i As Integer
Dim x As Variant
i = -1
For Each x In Range("Tracking").Cells 'reading named range into array
i = i + 1
ReDim Preserve trackers(i) As String
trackers(i) = x.Value
Next x
Application.ScreenUpdating = False
With Sheets("Database")
For Each objcBox In .OLEObjects
If TypeName(objcBox.Object) = "CheckBox" Then 'looking for checkboxes
If objcBox.Object.Value = True Then
cBox(UBound(cBox)) = trackers(i) 'setting cbox array as nth trackers value
i = i + 1
ReDim Preserve cBox(UBound(cBox) + 1)
End If
End If
Next
If IsError(Application.Match((cBox), 0)) Then
MsgBox "Nothing Selected"
Exit Sub
End If
ReDim Preserve cBox(UBound(cBox))
If Not .AutoFilterMode Then
Dbtbl.Range.AutoFilter
Dbtbl.Range.AutoFilter Field:=Dbtbl.HeaderRowRange.Find("Project Flag").Column, Criteria1:=Array(cBox)
End If
End With
Application.ScreenUpdating = True
End Sub
Итак, после некоторых проб и ошибок я обнаружил, что массив cbox () содержит только первое значение моего массива трекеров, следовательно, он фильтрует только пустые записи.Не знаю, что вызывает это, но подумал, что это может быть примечательно