Wierzę, że jest to możliwe tylko z VBA.
Zakładam również, że nie trzeba sprawdzać, czy autofiltr jest zastosowany w prawidłowym zakresie (patrz Dalsza lektura) i że nie trzeba sprawdzać, czy AUTOFILTER jest aktywny, czy nie (tj. Brak strzałek, brak autofiltru) .
Oto funkcja zdefiniowana przez użytkownika, która sprawdza, czy w arkuszu są jakieś aktywne filtry i, jeśli takie istnieją, wyświetla, które kolumny zostały odfiltrowane. Jestem pewien, że istnieją lepsze funkcje; być może trzeba go zmodyfikować, aby dostosować do własnych potrzeb.
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
Aby go użyć, wpisz ff. formuła do pustej komórki:
=CheckFilters(A3:E3)&LEFT(SUBTOTAL(9,A3:A48),0)
Gdzie A3:E3
zawiera etykiety kolumn dla danych (patrz przykład poniżej)
&LEFT(SUBTOTAL(9,A3:A48),0)
Część wzoru nie służy żadnemu celowi widoczny inny niż zmusić komórkę do ponownej oceny „automatycznie”, jak zmienić filtry. (Podziękowania dla Seana Cheshire za sugestię). Zauważ, że jest to lepsze niż opisane tutaj rozwiązanie , ponieważ przelicza się ono tylko wtedy, gdy zmienia się zakres zdefiniowany w parametrach.
PRZYKŁADY
Z filtrami:
Autofiltr jest włączony, ale żadne kolumny nie są filtrowane:
Używany z formatowaniem warunkowym:
DALSZE CZYTANIE
Jak korzystać z filtrów automatycznych w makrach programu Excel VBA Makra
Obiekt filtrów automatycznych (Dokumentacja językowa Excel 2003 VBA)
=CheckFilters(A3:E3) & &LEFT(SUBTOTAL(9,A5:A200),0)
naprawdę każda funkcja, która powoduje, że dokonuje ponownej oceny przy zmianie arkusza kalkulacyjnego