Am Verzweifeln: Excel Filter automatisch aktualisieren?
Hallo liebe Community,
ich weiß, es gibt mehrere Leute, die diese Frage schon gestellt haben, aber ich bekomme es einfach nicht hin. Vielleicht habe ich auch nur gerade eine Denk(Dummheits)Blockade, versuche das seit ca 2 Stunden zu realisieren.
Ich habe eine Tabelle mit diversen Daten und ein (Balken)Diagramm, welches für jede weitere Zeile in der Tabelle einen neuen Balken hinzufügen sollte. Das ist an sich nicht schwer, aber ich möchte, solange noch keine Daten vorhanden sind, keine leeren Stellen im Diagramm... (siehe: https://gyazo.com/346a1e059ea781ea82d471505856904a) ...und das kriege ich nicht hin.
Ich habe eine Hilfstabelle gemacht und einen Filter darüber gelegt, dass alle leeren ("") Zellen ausgeblendet werden, das funktioniert auch soweit im Diagramm, aber ich muss nach jedem Eintrag in die eigentliche Tabelle wieder den Filter von Hand aktualisieren und das ist ärgerlich.
Ich hoffe ihr könnt mir helfen, sonst sehe ich schwarz für meinen PC und mein Fenster (und eventuelle Fußgänger). Erklärt es am besten so, wie ihr es einem 6 Jährigen erklären würdet. :)
Grüße Tuesday
/ps: Was ich bisher ausgegraben habe und (vermutlich wegen mangelnder - bis nicht existenter - VBA Kenntnis) nicht funktioniert hat:
- office-loesung.de/ftopic93223_0_0_asc.php
- office-loesung.de/ftopic60304_0_0_asc.php
- gutefrage.net/frage/excel-gefilterte-daten-automatisch-aktualisieren
1 Antwort
Weißt Du wie man Makros einfügt? Sonst ganz von vorne: https://www.lecturio.de/magazin/excel-makros-so-optimieren-sie-ihren-bueroalltag/ da gibt es x andere Erklärungen, falls diese nicht nachvollziehbar ist.
Zur eigentlichen Anwendung:
Du brauchst einen Auslöser für das Makro - einen Button (wobei das dann nicht schneller ist als den Filter manuell zu aktualisieren) oder auf Änderungen auf dem Tabellenblatt direkt zu reagieren.
Private Sub worksheet_change(ByVal target As Range)
ActiveSheet.Range("$A$1:$B$6").AutoFilter Field:=2, Criteria1:="<>"
End Sub
Die Zeile mit activesheet.range... musst Du allerdings auf Deinen konkreten Filter anpassen. Am einfachsten geht das mit dem Makrorekorder: Zunächst die Filtereinstellungen rausnehmen. Dann unter Ribbon Entwicklertools den Makrorekorder starten - die Filter entsprechend setzen und Makrorekorder beenden. Unter "Bearbeiten" kannst Du Dir den aufgezeichneten Code anschauen und die Zeile mit Autofilter... rauskopieren und in das private sub worksheet_change einfügen.
Das sieht doch schon passend aus. Das Makro muss allerdings zum Tabellenblatt gespeichert werden, d.h. wenn Du Ribbon Entwicklerwerkzeuge > VBA öffnest, nicht in einem separaten Modul, sondern bei dem Tabellenblatt, das überwacht werden soll.
Danach sollte es genügen, dass Du irgendeine Zelle auf dem Tabellenblatt änderst, dass das Makro durchlaufen wird.
Danke für die Antwort.
Ich habe es in Microsoft Excel Objekte -> Tabelle6 so gespeichert wie es oben steht. Leider aktualisiert sich der Filter aber nicht. Das Makro an sich funktioniert (mit einem extra Button) nur das Auslösen durch Änderungen will nicht so richtig.
Erstmal Danke für die Antwort. Bei mir sieht das jetzt so aus: https://gyazo.com/edb15b2267e3a1dbe60293c6b14fbff6
Soweit war ich mit einem ähnlichen Code schon mal, aber ich verstehe nicht, wie ich diesen dann auslöse.
Wenn ich in meiner Tabelle nun einen Wert hinzufüge, aktualisiert sich der Filter noch immer nicht.
Hallo Ninombre,
es wäre echt klasse, wenn du mir noch sagen könntest, wie ich das Makro auslöse durch Änderungen im Tabellenblatt.
Grüße
Tuesday