Я вважаю, що це можливо лише за допомогою 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 Macros
AutoFilter Object (Довідник мови Excel 2003 VBA)