Tabelle listobject Filter speichern

Moderator: ModerationP

Tabelle listobject Filter speichern

Beitragvon trendy » 24. Okt 2021, 17:24

Hallo,

Ich habe eine intelligente Tabelle(ListObject)
Nun möchte ich die Tabelle aufsteigend sortieren, dabei soll aber der aktive eingestellte Filter zwischengespeichert und
nach dem Sortieren wieder gesetzt werden.

Danke euch schon in Voraus
glg Trendy
trendy
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 9
Registriert: 26. Sep 2020, 09:04

Re: Tabelle listobject Filter speichern

Beitragvon Der Steuerfuzzi » 25. Okt 2021, 08:38

Viele Grüße
Michael
Benutzeravatar
Der Steuerfuzzi
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 3934
Registriert: 25. Mär 2013, 13:28

Re: Tabelle listobject Filter speichern

Beitragvon Flotter Feger » 25. Okt 2021, 09:17

Hallo,

seit wann muss man den Filter speichern, wenn man die gefilterten Daten mit dem Autofilter-Sort sortieren will ?

Ist ja ganz was neues ... oder hast du noch gar nicht mitgekriegt, dass der Autofilter auch eine Sort-Funktion hat ?
VG Sabina

Wer auch weiter Hilfe erwartet, sollte sich nicht zu schade sein, ein kurzes Feedback zu geben.
Bei mir läuft Win 7 32-Bit - Office 2016 Pro Plus 32-Bit, Office 2019 Pro Plus 32-Bit und Office 2021 Pro Plus 32-Bit
Benutzeravatar
Flotter Feger
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 3329
Registriert: 24. Okt 2016, 16:40

Re: Tabelle listobject Filter speichern

Beitragvon trendy » 25. Okt 2021, 18:40

Hallo Michael,

Danke für deinen Tipp, diesen Code verwende ich schon -- dieser funktioniert leider nicht bei Datentabellen(List objects).
Ich habe es leider auch nicht geschafft diesen umzubauen.
Vielleich kannst du mir helfen, wäre toll.


@Sabina: natürlich ist mir die Sort Funktion bekannt, nur bei Blattschutz funktioniert diese nicht, und es handelt sich um Tabellen wo viele daran arbeiten und ich diese schützen muss.
Also bleibt mir nix übrig als dies über VBA mit einem Button zu lösen.

Währe toll wenn mir jemand helfen könnte
Trendy
trendy
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 9
Registriert: 26. Sep 2020, 09:04

Re: Tabelle listobject Filter speichern

Beitragvon Flotter Feger » 25. Okt 2021, 19:26

Auch wenn ich nur ein Ähhhd gekriegt hab ...

Hallo,

... darf ich mal eben fragen, wo im Eingangspost etwas von einem 'Blattschutz' steht ? :( :doubt: :roll:
Das nur mal zum Thema ... "wie schildere ich mein Problem so, das es auch andere begreifen ..."

Dann brauchst du nicht 'Blat schützen' sondern 'Bearbeiten von Bereichen zulassen'.
Da gibst du die gesamte Tabelle ... auch die Spaltenköpfe !!! ... als Bereich an.
Dann unten links auf 'Blattschutz' ... 'gesperrte Zellen auswählen' abhaken (den Haken raus) ... und 'Autofilter' sowie 'Sortieren' anhaken (den Haken rein)

Nach klick auf 'OK' sollte es gehen ... wenn tatsächlich nur Autofilter/Sortieren gefragt ist ... aber mehr steht ja nirgends ... also gehe ich mal davon aus. :wink:

Dann klappt's vielleicht auch mit der hübschen, neuen Sekretärin vom Chef ... :wink:
VG Sabina

Wer auch weiter Hilfe erwartet, sollte sich nicht zu schade sein, ein kurzes Feedback zu geben.
Bei mir läuft Win 7 32-Bit - Office 2016 Pro Plus 32-Bit, Office 2019 Pro Plus 32-Bit und Office 2021 Pro Plus 32-Bit
Benutzeravatar
Flotter Feger
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 3329
Registriert: 24. Okt 2016, 16:40

Re: Tabelle listobject Filter speichern

Beitragvon Der Steuerfuzzi » 26. Okt 2021, 07:57

Auf der Seite https://stackoverflow.com/questions/948 ... ned-filter etwas weiter unten gibt es einen Beitrag zum Thema Autofilter bei Listobjects:
Code: Alles auswählen
'~~~~~~~~~~~~~~~~~~~~~~~~~~~
' Sub:      SaveListObjectFilters
' Purpose:  Save filter on worksheet
' Returns:  wks.AutoFilterMode when function entered
' Source: http://stackoverflow.com/questions/9489126/in-excel-vba-how-do-i-save-        restore-a-user-defined-filter
'
' Arguments:
'   [Name]      [Type]  [Description]
'   wks         I/P     Worksheet that filter may reside on
'   FilterRange O/P     Range on which filter is applied as string; "" if no filter
'   FilterCache O/P     Variant dynamic array in which to save filter
'
' Author:   Based on MS Excel AutoFilter Object help file
'
' Modifications:
' 2006/12/11 Phil Spencer: Adapted as general purpose routine
' 2007/03/23 PJS: Now turns off .AutoFilterMode
' 2013/03/13 PJS: Initial mods for XL14, which has more operators
' 2013/05/31 P.H.: Changed to save list-object filters

Function SaveListObjectFilters(lo As ListObject, FilterCache()) As Boolean
Dim ii As Long

filterRange = ""
    With lo.AutoFilter
        filterRange = .Range.Address
        With .Filters
            ReDim FilterCache(1 To .Count, 1 To 3)
            For ii = 1 To .Count
                With .Item(ii)
                    If .On Then
#If False Then ' XL11 code
                        FilterCache(ii, 1) = .Criteria1
                        If .Operator Then
                            FilterCache(ii, 2) = .Operator
                            FilterCache(ii, 3) = .Criteria2
                        End If
#Else   ' first pass XL14
                        Select Case .Operator

                        Case 1, 2   'xlAnd, xlOr
                            FilterCache(ii, 1) = .Criteria1
                            FilterCache(ii, 2) = .Operator
                            FilterCache(ii, 3) = .Criteria2

                        Case 0, 3 To 7 ' no operator, xlTop10Items, _
xlBottom10Items, xlTop10Percent, xlBottom10Percent, xlFilterValues
                            FilterCache(ii, 1) = .Criteria1
                            FilterCache(ii, 2) = .Operator

                        Case Else    ' These are not correctly restored; there's someting in Criteria1 but can't save it.
                            FilterCache(ii, 2) = .Operator
                            ' FilterCache(ii, 1) = .Criteria1   ' <-- Generates an error
                            ' No error in next statement, but couldn't do restore operation
                            ' Set FilterCache(ii, 1) = .Criteria1

                        End Select
#End If
                    End If
                End With ' .Item(ii)
            Next
        End With ' .Filters
    End With ' wks.AutoFilter
End Function


'~~~~~~~~~~~~~~~~~~~~~~~~~~~
' Sub:      RestoreListObjectFilters
' Purpose:  Restore filter on listobject
' Source: http://stackoverflow.com/questions/9489126/in-excel-vba-how-do-i-save-restore-a-user-defined-filter
' Arguments:
'   [Name]      [Type]  [Description]
'   wks         I/P     Worksheet that filter resides on
'   FilterRange I/P     Range on which filter is applied
'   FilterCache I/P     Variant dynamic array containing saved filter
'
' Author:   Based on MS Excel AutoFilter Object help file
'
' Modifications:
' 2006/12/11 Phil Spencer: Adapted as general purpose routine
' 2013/03/13 PJS: Initial mods for XL14, which has more operators
' 2013/05/31 P.H.: Changed to restore list-object filters
'
' Comments:
'----------------------------
Sub RestoreListObjectFilters(lo As ListObject, FilterCache())
Dim col As Long

If lo.Range.Address <> "" Then
    For col = 1 To UBound(FilterCache(), 1)

#If False Then  ' XL11
        If Not IsEmpty(FilterCache(col, 1)) Then
            If FilterCache(col, 2) Then
                lo.AutoFilter field:=col, _
                    Criteria1:=FilterCache(col, 1), _
                        Operator:=FilterCache(col, 2), _
                    Criteria2:=FilterCache(col, 3)
            Else
                lo.AutoFilter field:=col, _
                    Criteria1:=FilterCache(col, 1)
            End If
        End If
#Else

        If Not IsEmpty(FilterCache(col, 2)) Then
            Select Case FilterCache(col, 2)

            Case 0  ' no operator
                lo.Range.AutoFilter field:=col, _
                    Criteria1:=FilterCache(col, 1) ' Do NOT reload 'Operator'

            Case 1, 2   'xlAnd, xlOr
                lo.Range.AutoFilter field:=col, _
                    Criteria1:=FilterCache(col, 1), _
                    Operator:=FilterCache(col, 2), _
                    Criteria2:=FilterCache(col, 3)

            Case 3 To 6 ' xlTop10Items, xlBottom10Items, xlTop10Percent,     xlBottom10Percent
#If True Then
                lo.Range.AutoFilter field:=col, _
                    Criteria1:=FilterCache(col, 1) ' Do NOT reload 'Operator' , it doesn't work
                ' wks.AutoFilter.Filters.Item(col).Operator = FilterCache(col, 2)
#Else ' Trying to restore Operator as well as Criteria ..
                ' Including the 'Operator:=' arguement leads to error.
                ' Criteria1 is expressed as if for a FALSE .Operator
                lo.Range.AutoFilter field:=col, _
                    Criteria1:=FilterCache(col, 1), _
                    Operator:=FilterCache(col, 2)
#End If

            Case 7  'xlFilterValues
                lo.Range.AutoFilter field:=col, _
                    Criteria1:=FilterCache(col, 1), _
                    Operator:=FilterCache(col, 2)

#If False Then ' Switch on filters on cell formats
' These statements restore the filter, but cannot reset the pass Criteria, so the filter hides all data.
' Leave it off instead.
            Case Else   ' (Various filters on data format)
                lo.RangeAutoFilter field:=col, _
                    Operator:=FilterCache(col, 2)
#End If ' Switch on filters on cell formats

            End Select
        End If

#End If     ' XL11 / XL14
    Next col
End If
End Sub
Viele Grüße
Michael
Benutzeravatar
Der Steuerfuzzi
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 3934
Registriert: 25. Mär 2013, 13:28

Re: Tabelle listobject Filter speichern

Beitragvon slowboarder » 26. Okt 2021, 08:15

Hi
ist die intelligente Tabelle zwingend erforderlich?
in einem Blatt ohne so ein Listobject kannst du die Einstellung des Filters in einer Benutzerdefinierten Ansicht speichern (Menü: Ansicht - Arbeitsmappenansichten - Benutzerdef. Ansichten) und von dort aus wieder aufrufen.
das geht auch per VBA recht einfach (der Recorder ist dein Freund).
Aber wie gesagt, bei einem Listobject im Blatt ist diese Funktion gesperrt.
Gruß Daniel
slowboarder
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 28569
Registriert: 18. Apr 2009, 13:33

Re: Tabelle listobject Filter speichern

Beitragvon Kuwe » 26. Okt 2021, 10:24

slowboarder hat geschrieben:Aber wie gesagt, bei einem Listobject im Blatt ist diese Funktion gesperrt.


Leider nicht nur in demselben, sondern auch in irgendeinem anderen Blatt. :(
Gruß Uwe
Benutzeravatar
Kuwe
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 6673
Registriert: 30. Dez 2003, 18:37

Re: Tabelle listobject Filter speichern

Beitragvon trendy » 27. Okt 2021, 08:41

Wow,
danke für die vielen Tipps, werde es mit vba versuchen und euch dann Feedback geben
Glg Trendy
trendy
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 9
Registriert: 26. Sep 2020, 09:04


Zurück zu Excel Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: CaBe, Klaus-Dieter, MarioJen, mumpel und 9 Gäste