Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1888to1892
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Autofilter in Excel mit Makro duchlaufen

Autofilter in Excel mit Makro duchlaufen
13.07.2022 15:40:52
Michaela
Hallo liebe Leute,
ich habe bereits viel von euch auf dieser Seite hier gelernt, daher möchte ich euch erstmal ein dickes Dankeschön sagen! :-)
Leider komme ich bei einer vermutlich eher einfachen Aufgabenstellung nicht so recht weiter. Ich müsste mit einem Makro einen Autofilter in Excel Eintrag für Eintrag durchlaufen und jeweils ein "Submakro" ausführen.
Siehe beigefügtes, vereinfachtes Beispiel (https://www.herber.de/bbs/user/154128.xlsx). Die Spalte B ("Fahrzeug") kann aus 1 bis n Einträgen bestehen und ist die, wonach gefiltert wird, sozusage "nach und nach" bzw. Eintrag für Eintrag. Wenn der Filter vom gesuchten Makro auf der ersten der 1 bis n "Rubriken" gesetzt wurde (im Beispiel: Cabrio), dann soll mein Submakro starten und das erledigen, was mit den Daten zu tun ist. Dann soll der nächste Eintrag des Filters genommen werden (im Beispiel: E-Auto)) und wieder mein Submakro aufgerufen werden. Usw. Usw. - so lange, bis der Filter komplett durchlaufen wurde. Anmerkung: Die Werte sind nicht fest definiert, sondern können varriieren. Man darf sich also nicht "statisch" auf die Begriffe an sich beziehen (im Beisiel könnten also auch mal noch andere Autotypen hinzukommen, oder welche wegfallen usw.)
Kann irgend jemand helfen?:-)

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Autofilter in Excel mit Makro duchlaufen
13.07.2022 16:06:29
Daniel
Hi
1. Wenn nicht schon gegeben, sortiere die Liste nach Spalte B
2. das Abarbeiten jeder Gruppe machst du jetzt am einfachsten so

dim Zelle1 as range
dim Zelle2 as range
set Zelle2 = Range("B1") ' erste Zelle vor den Daten (überschrift)
Do
set Zelle1 = Zelle2.Offset(1, 0)
if Zelle1 = "" then Exit Do
Set Zelle2 = Columns(2).Find(what:=Zelle1.value, lookat:=xlwhole, lookin:=xlvalues, lookat:=xlwhole, searchdirection:=xlprevious)
with range(Zelle1, Zelle2).entireRow
... hier dann der Code zum des Bereichs zwischen Zelle1 und Zelle 2, also
end with
Loop
Gruß Daniel
Anzeige
AW: Autofilter in Excel mit Makro duchlaufen
13.07.2022 17:32:24
Michaela
Lieber Daniel,
vielen Dank für deine Rückmeldung, ich weiß das sehr zu schätzen!
Dein Lösungsvorschlag basiert zwar auf einem anderen Prinzip als das woran ich dachte, aber solange das korrekte Resultat rauskommt, ist das auch OK.
Leider läuft das ganze aber (noch) nicht so recht; es kommt eine Fehlermeldung ("Laufzeitfehler 448: Benanntes Argument nicht gefunden"), welche die folgende Zeile moniert:
Set Zelle2 = Columns(2).Find(what:=Zelle1.Value, lookat:=xlWhole, LookIn:=xlValues, lookat:=xlWhole, searchdirection:=xlPrevious)
Die Variablen sind alle deklariert, daran kann es nicht liegen. Hast du eine Idee? Hattest du es bei dir anhand meines Beispiel-Sheets ausprobiert und es läuft bei dir?
Anzeige
AW: Autofilter in Excel mit Makro duchlaufen
13.07.2022 17:48:12
onur
2x LookAt ?
AW: Autofilter in Excel mit Makro duchlaufen
13.07.2022 17:56:21
Daniel
Hi
nein.
wie das mit dem .FIND programmiert werden muss, kanns du dir ja mit dem Recorder und der Hilfe selbst ermitteln.
entscheidend ist, dass man den Parameter SearchDirection:=xlprevious setzt, damit ausgehend vom ersten Element nicht das zweite Element sondern das letzte (also das nächste in der entgegengesetzten Suchrichtung) gefunden wird.
Gruß Daniel
AW: Autofilter in Excel mit Makro duchlaufen
13.07.2022 19:08:43
Michaela
Wie Onu bereits festgestellt hat, habe ich jetzt auch gesehen dass ein "lookat" zu viel drin war. Lasse ich das weg, läuft das Makro. Allerdings liefert es leider nicht das Resultat, was beabsichtigt war - ich denke es bedarf daher dann doch dem Prinzip dass ich ursprünglich meinte, also Nutzung des Excel Autofilters:
1. Filter auf der Spalte einschalten (ist ja bereits in Excel bereits drin)
2. Das Makro soll dann den ERSTEN Wert im Filter auswählen, dadurch erscheint die dazugehörige Auswahl bzw. Inhaltsbereich (diese Auswahl kopiert mein Submakro und erstellt daraus ein neues, separates Sheet)
3. Dann soll das Makro den ZWEITEN Wert im Filter auswählen, dadurch erscheint die dazugehörige Auswahl bzw. Inhaltsbereich (diese Auswahl kopiert mein Submakro und erstellt daraus ein neues, separates Sheet)
4. Dann soll das Makro den DRITTEN Wert im Filter auswählen, dadurch erscheint die dazugehörige Auswahl bzw. Inhaltsbereich (diese Auswahl kopiert mein Submakro und erstellt daraus ein neues, separates Sheet)
5. usw., bis alle Einträge im Filter durchlaufen sind
Klingt eigentlich ganz einfach, aber es ist leider wie verhext... vielleicht fällt ja noch jemandem was ein? :-)
Anzeige
AW: Autofilter in Excel mit Makro duchlaufen
13.07.2022 19:47:35
Daniel
Eigentlich ist dann mein Makro genau das richtige für dich.
Was du mit den Daten machen wolltest, hast du ja nicht gesagt deswegen habe ich da auch auch nichts programmiert.
Die Liste muss nach der Filterspalte sortiert sein und es darf kein Autoftee aktiv sein, damit alle Zeilen sichtbar sind.
Zelle1 ist dann immer die erste und Zelle2 die letzte Zelle eines Blocks.
Wenn du diesen dann kopieren willst ginge das mit

Range(Zelle1, Zelle2).EntireRow.Copy
Wenn du klassisch nach jedem Wert einmal filtern willst, kannst du auch die Spalte B in ein leeres Blatt kopieren, dort dass Duplikate_Entfernen anwenden und mit einer Schleife über die übrig gebliebenen Werte laufen, dann hast du auch jeden Filterwert einmal.
Gruß Daniel
Anzeige
AW: Autofilter in Excel mit Makro... (=> gelöst!)
14.07.2022 20:15:26
Michaela
Hallo Daniel,
Du hattest vollkommen recht, das war bzw. ist die Lösung! Ich hatte gestern irgendwie auf dem Schlauch gestanden, aber als ich mich dann heute noch mal im detail mit deinem Vorschlag beschäftigt habe, stellte sich heraus, dass dieser absolut passt (lediglich das eine "lookat" musste raus, weil zu viel).
Vielen herzlichen Dank an dich!! :-)
LG,
Michaela

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige