Я считаю, что это возможно только с VBA.
Я также предположил бы, что вам не нужно проверять, применяется ли автофильтр в правильном диапазоне (см. Дальнейшее чтение), и что вам не нужно проверять , активен ли AUTOFILTER или нет (т.е. нет стрелок, нет автоматического фильтра ),
Вот пользовательская функция, которая проверяет, есть ли какие-либо активные фильтры на листе и, если они есть, отображает, какие столбцы были отфильтрованы. Я уверен, что есть лучшие функции там; Возможно, вам придется изменить его в соответствии с вашими потребностями.
Function CheckFilters(r As Range) As String
Set AWS = ActiveSheet
fstate = ""
If AWS.FilterMode Then
c = AWS.AutoFilter.Filters.Count
'go through each column and check for filters
For i = 1 To c Step 1
If AWS.AutoFilter.Filters(i).On Then
fstate = fstate & r(i).Value & ", "
End If
Next i
'removes the last comma
fstate = Left(fstate, Len(fstate) - 2)
Else
fstate = "NO ACTIVE FILTERS"
End If
CheckFilters = fstate
End Function
Чтобы использовать его, введите FF. формула в пустую ячейку:
=CheckFilters(A3:E3)&LEFT(SUBTOTAL(9,A3:A48),0)
Где A3:E3
содержит метки столбцов для ваших данных (см. Пример ниже)
Часть &LEFT(SUBTOTAL(9,A3:A48),0)
формулы не служит никакой видимой цели, кроме как заставить ячейку пересчитывать "автоматически" при смене фильтров. (Благодарю Шона Чешира за предложение). Обратите внимание, что это лучше, чем решение, описанное здесь, потому что оно пересчитывается только при изменении диапазона, определенного вами в ваших параметрах.
ПРИМЕРЫ
С фильтрами:
Автофильтр включен, но столбцы не фильтруются:
Используется с условным форматированием:
ДАЛЬНЕЙШЕЕ ЧТЕНИЕ
Как использовать автофильтры в макросах Excel VBA
Объект автофильтра (справочник по языку Excel 2003 VBA)