Clever-Excel-Forum

Normale Version: Filterung mit VBA Codes
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo,

ich habe in der Anlage einen Code zur automatisierten Filterung der Spalte "A" in Register "Werte" und zur Ermittlung der sich dadurch ergebenden Summen in Spalte "C". Diese Summen werden anschließend im Register "Summe" aufgelistet. Es besteht jetzt noch folgendes Problem. Ich würde gerne zur bestehenden Filterung in Spalte "A" zusätzlich eine Filterung in Spalte "B" im Code verankern (=Filterung nach Jahr und Monat). Dadurch müssten alle Werte aufgelistet werden, welche sich aus der Filterung in Spalte "A" und zusätzlich der Filterung in Spalte "B" ergeben. Die Zeile im Makro "Werte_Filterung" lt. Anlage, die derzeit die Filterung in Spalte A beschreibt ist:

Code:
Worksheets("Werte").Range("$A$1:$G$1000").AutoFilter Field:=1, Criteria1:=Worksheets("Summe").Cells(bBereich, 1)


Ich nehme an, dass anschließend eine zweite Zeile für die zusätzliche Filterung der Spalte "B" integriert werden müßte, welche jedoch alle Varianten abdeckt (ich nehme an mit einer Schleife).

Ich würde mich freuen, wenn Ihr mich bei meinem Problem unterstützen könntet!
Hallo,

das kannst du ganz komfortabel mit der Standardfunktion Teilergebnis machen.
Hallo Klaus-Dieter,

ich würde die zusätzliche Filterung gerne im bestehenden VBA Code einbauen, da ich den Code automatisiert in Kombination mit weiteren Codes ausführen würde. Meine Anlage zeigt lediglich eine Beispieltabelle. Die Tabelle, in die ich den Code integrieren möchte, ist umfangreicher.
Hallo,


Zitat:... gerne im bestehenden VBA Code einbauen, da ich den Code automatisiert in Kombination
mit weiteren Codes ausführen würde


wenn ich richtig verstehe, was Du machen willst, so ist das der vollkommen falsche Weg.

Man bastelt keinen Spaghetticode nach dem Muster "JELÄNGER, JELIEBER", der dann
auch pflichtschuldig schön lange durch das Programm rödelt. Ein unschätzbarer Vorteil
vön VB und VBA ist es, daß man die Codes modular aufbauen kann, und sie dadurch
klein, übersichtlich und schnell zu halten.
VBA arbeitet den Code zeilenweise ab, das heißt, alles, was nicht im Code steht, ist auch
nicht in der Lage, ihn auszubremsen. Zu allem anderen kann man bei Bedarf Verzweigen.

Weil Du das gerade als Begründung für "wasauchimmer" angeführt hast, dem VBA ist es im
Übrigen Pupsegal, wie umfangreich die zu bearbeitende Datei ist.
Hallo,

danke für die Rückmeldung. Es würde mich freuen, wenn mich jemand bei der Anpassung meines bestehenden Codes für die Möglichkeit einer erweiterten Filterung unterstützen könnte. Wenn es bessere Alternativen zum bestehenden Code gibt, dann wäre das natürlich auch gut.
Hallo,

zeige Du doch mal, wie das Ergebnis im Blatt Summe dann aussehen soll.

Gruß Uwe
Hallo,

das Problem könnte eventuell mit lediglich einem weiteren Code gelöst werden, der mir die zu filternden Werte im Register "Summe" passend anordnet, um diese nachfolgend mit dem bereits vorhandenen Code zu filtern. 

Lt. dem derzeitigen Code könnte ich die zu filternden Jahre in Spalte A und die zu filternden Monate in Spalte B eintragen lassen. Nun wäre es wichtig in einer dritten Spalte per Code jeden einzelnen Eintrag in Spalte A jeweils allen Einträgen in Spalte B gegenüberzustellen. Dadurch würde in diesem Fall (siehe Bild als Beilage) z.B. in Spalte C das Jahr 2014 (aus Spalte A) neben jedem Monat (aus Spalte B in Spalte D übernommen) stehen und nachfolgend darunter das Jahr 2015 neben jedem Monat (aus Spalte D übernommen) eingetragen sein bis hin zum letzten Eintrag 2019. Eventuell hättet Ihr da eine geeignete Lösung als VBA Code.
Hallo,

da ich davon ausgehe, dass du dich mit meinem Vorschlag, die Funktion Teilergebnis einzusetzen, entweder nicht beschäftigt hast, oder kein Ergebnis bekommen hast, das dich zufrieden stellt, hier deine Datei mit dem eingearbeiteten Vorschlag. Für Rückfragen stehe ich gerne zur Verfügung.
Hallo Klaus-Dieter,

vielen Dank für Deinen Vorschlag, welche als Excel Lösung perfekt ist. Ich würde dazu noch einen Code suchen, der diese Auflistung automatisiert in die jeweilige Tabelle einträgt.
Hallo,

mein ursprüngliches Problem mit der Filterung konnte ich gestern noch lösen, habe jedoch noch ein weiteres Problem und bitte um Eure Mithilfe!

Mit dem nachfolgendem Code wird in der Regel die Filterung eines Auswahlkriteriums ermöglicht (hier: "2019"). Nun möchte ich gerne in diesem Code nach zwei Kriterien in derselben Spalte filtern, z.B. "2019" und "2015". Ich habe aufgrund von anderen Postings erfahren, dass das angeblich nur anhand eines zusätzlichen "Array" möglich ist, dessen Name dann in diesem Code als Suchkriterium angegeben wird. Wie könnte ich nun dennoch im Code nach 2 oder mehr Suchkriterien filtern bzw. wie würde da ein Array aussehen, das diese Aufgabe übernehmen könnte?

Code:
Worksheets("Werte").Range("$A$1:$G$1000").AutoFilter Field:=1, Criteria1:="2019"
Seiten: 1 2