Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
204to208
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
204to208
204to208
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Vereinfachung eines makros zum Filtern u. kopieren

Vereinfachung eines makros zum Filtern u. kopieren
16.01.2003 13:10:54
Oliver S.
Hallo allerseits,

ich benötige mal wieder Hilfe zu einem Makro. Ich habe mir mit dem Makrorecorder ein Makro aufgezeichnet. Das Makro sieht folgender maßen aus:

Sub Samsonstationen()

Range("A3").Select
Windows("Anlagendaten Hausstationen.xls").Activate
Selection.AutoFilter Field:=10, Criteria1:="0"
Range("A4:D72").Select
Selection.Copy
Windows("Samsonstationen").Activate
ActiveSheet.Paste
Range("A11").Select
Windows("Anlagendaten Hausstationen.xls").Activate
Selection.AutoFilter Field:=10, Criteria1:="1"
Application.CutCopyMode = False
Selection.Copy
Windows("Samsonstationen").Activate
ActiveSheet.Paste
Windows("Anlagendaten Hausstationen.xls").Activate
Selection.AutoFilter Field:=10, Criteria1:="2"
Application.CutCopyMode = False
Selection.Copy
Windows("Samsonstationen").Activate
Range("A15").Select
ActiveSheet.Paste
Range("A17").Select
Windows("Anlagendaten Hausstationen.xls").Activate
Selection.AutoFilter Field:=10, Criteria1:="3"
Application.CutCopyMode = False
Selection.Copy
Windows("Samsonstationen").Activate
Range("A15").Select
ActiveSheet.Paste
Range("A20").Select
.
.
.
.
usw.

Mit diesem Makro wird in Spalte J mit dem Autofilter nach 0 gefiltert, die dann angezeigten Zellen werden kopiert und in eine andere Mappe kopiert. Dann wird in Spalte J nach 1 gefiltert, kopiert, eingefügt usw. usw.
Da die Datei in der gefiltert wird, ständig wächst, ist es mit meiner Lösung etwas Zeitaufwendig. Ich darf nicht vergessen das Makro immer zu erweitern. Nun dachte ich mir man könne das Makro irgendwie vereinfachen. Und da liegt das Problem. Wie stelle ich das an?
Ziel des Makros sollte sein, das in Spalte J erst nach der 0 gefiltert wird. Die Daten dann kopiert und eingefügt werden und dann automatisch die Zahl nach der gefiltert werden soll um eins (1) erhöht wird. Dann diese Daten kopiert werden und in der Mappe, in die diese Daten kopiert werden sollen, ermittelt wird, wo sich die erste freie Zelle in Spalte A befindet und die Daten dann eine Zelle nach der ersten freien Zelle eingefügt werden. Das Makro sollte so lange laufen, solange es eine Zahl in Spalte J findet.

Ich hoffe, das ich nicht unverschämt wirke mit meinen Ansprüchen an das Makro und an Euch. Aber für mich ist das ein fast unlösbares Problem.

Wenn mir jemand behilflich sein könnt, wäre ich sehr dankbar,
Oliver

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: Vereinfachung eines makros zum Filtern u. kopieren
16.01.2003 13:38:56
Nepumuk
Hallo Oliver,
da ist nur die Frage, wann das Programm aufhören soll zu suchen, ob nicht doch noch eine höhere Zahl in Spalte J vorhanden ist, oder kannst du das irgendwie eingrenzen?
Gruß
Nepumuk
Re: Vereinfachung eines makros zum Filtern u. kopieren
16.01.2003 13:39:01
Nepumuk
Hallo Oliver,
da ist nur die Frage, wann das Programm aufhören soll zu suchen, ob nicht doch noch eine höhere Zahl in Spalte J vorhanden ist, oder kannst du das irgendwie eingrenzen?
Gruß
Nepumuk
Re: Vereinfachung eines makros zum Filtern u. kopieren
16.01.2003 14:26:37
Oliver S.
Hallo Nepumuk,

Danke Dir erst einmal für Deine Hilfsbereitschaft. Die Zahl in Spalte J wird im voraussichtlich bei 500 aufhören. Kann sich aber irgendwann wieder ändern. Im Moment ist die letzte Zahl eine 76.

Gruss,
Oliver

Anzeige
Re: Vereinfachung eines makros zum Filtern u. kopieren
16.01.2003 14:53:32
Martin Bolleter
Hallo Oliver

dh dass du bis zu 500 mal zwischen 2 Dateien hin und her wechselst, selektierst, filterst, kopierst etc etc; ich hoffe, du hast mindestens einen Cray 1 Spupercomputer!

Falls nicht, würde ich das Problem ganz anders angehen:
Kopiere deine ganze (!) Ausgangs-Tabelle als Array in eine Variant-Variable, sortiere diese nach Spalte D und schreibe den gewünschten Teil dann in deine Tabelle 2. Das dürfte zig-mal schneller sein.

Wenn du interessiert bis, kann ich mal versuchen, das zu bauen. Vieleicht hast du noch weitere Infos bezüglich der Struktur deiner Start- und Zieltabellen (Sheet-Name, Spalten, Titelzeile etc).

Gruss
Martin

Anzeige
Re: Vereinfachung eines makros zum Filtern u. kopieren
16.01.2003 15:08:45
Nepumuk
Hallo Oliver,
so sollte es klappen:

Gruß
Nepumuk
Re: Vereinfachung eines makros zum Filtern u. kopieren
16.01.2003 15:09:01
Oliver S.
Hi Martin,

ich danke Dir für Deine Antwort. Das kopieren zwischen zwei Tabellenblättern würde mir auch helfen. Ist auch kein weiteres Problem für mich, wenn das Schreiben in eine andere Datei entfällt.

Bezüglich der Struktur würde ich mich später noch mal melden, da ich gerade aufn Sprung bin.

Bis dahin grüsse ich freundlichst,
Oliver

Re: Vereinfachung eines makros zum Filtern u. kopieren
16.01.2003 15:22:01
Martin Bolleter
Hallo Oliver

du kannst auch den letzten Vorschlag von Nepumuk nehmen. Ich verstehe zwar nicht ganz, was er im If-Teil macht, aber anschliessend wird deine Ausgangstabelle sortiert (Nach Spalte J, musst du noch anpassen!) und dann die Spalten A-D in das andere Workbook kopiert. Wenn es dich nicht stört, dass dabei auch die Ausgangstabelle verändert (sortiert) wird, sollte das funktionieren. Ist im Prinzip die gleiche Idee wie mein Vorschlag.

Gruss
Martin

Anzeige
Re: Vereinfachung eines makros zum Filtern u. kopieren
16.01.2003 15:27:12
Nepumuk
Hallo Martin,
damit schalte ich gesetzte Filter auf "alle".
Gruß
Nepumuk
Leider nicht so ganz richtig
16.01.2003 17:34:31
Oiver S.
Nabend Nepumuk,

danke, dass Du Dir die Mühe gemacht hast, mir ein Makro anzufertigen. Leider ist das nicht so wie ich es mir vorstelle. Dein Makro sortiert mir das ganze Arbeitsblatt, aus dem die Daten kopiert werden sollen. Das sollte das Makro aber nicht machen. Diese Arbeitsmappe soll unangetastet bleiben. Bis auf den Autofilter aktivieren, aber der ändert ja nichts an der bestehenden Arbeitsmappe. Weiterhin werden die kopierten Daten falsch in die andere Tabelle geschrieben. Ich hatte mir vorgestellt, das erst die Daten kopiert werden, deren Übereinstimmung in Spalte J null (0) ist. Dann sollte eine Leerzeile stehen. Danach sollten die Daten kopiert werden, deren Übereinstimmung eins (1) ist. Danach sollte wieder eine Leerzeile folgen. Dann die Übereinstimmung 2, 3, usw. Immer getrennt von einer Leerzeile. Alles ohne sortieren.

Ich hoffe, dass Du noch eine Idee für mich hast.

MfG,
Oliver

Anzeige
Re: Leider nicht so ganz richtig
16.01.2003 18:10:53
Nepumuk
Hallo Oliver,
ich dacht halt so geht es wesentlich schneller, aber gut, du darfs nur nicht meckern, wenn du dir, solange das Programm läuft, eine Kanne Kaffee kochen und trinken kannst.

Gruß
Nepumuk
Re: Leider nicht so ganz richtig
16.01.2003 18:17:04
Oiver S.
Danke Dir Nepumuk,

ohne das Makro getestet zu haben, gleich noch mal eine Frage, hinsichtlich der Zeit die das Makro zum Abarbeiten braucht. Würde es schneller gehen, wenn die Daten nicht in eine andere Datei geschrieben würden, sondern in eine anderes Tabellenblatt der bereits geöffneten Datei?

Könntest Du mir das vielleicht beantworten?

Danke,
Oliver

Anzeige
Re: Leider nicht so ganz richtig
16.01.2003 18:24:18
Nepumuk
Hallo Oliver,
Überleg einfach mal. Das Programm kopiert Daten von einer Speicheradress in eine andere. Und der Computer ist ja nicht die frühere Bundespost. Also, ob ich das an die eine oder die andere Speicheradresse schicke ist völlig egal.
Gruß
Nepumuk
Re: Leider nicht so ganz richtig
16.01.2003 18:29:38
Oiver S.
Also erst einmal, das Makro ist genau wie ich es mir vorgestellt hatte. Dauert wirklich etwas lange, aber damit muß ich dann wohl leben. Wird ja auch nicht ständig ausgeführt.
Jetzt nur noch eine Kleinigket. Wie muß das Makro aussehen, wenn die Daten nicht in eine andere Datei, sondern in ein anderes Arbeitsbaltt kopiert werden sollen?

Könntest Du Dich meiner noch einmal erbarmen und mir das hier posten.

Danke Dir noch mal,
Oliver

Anzeige
Re: Leider nicht so ganz richtig
16.01.2003 18:42:29
Nepumuk
Hallo Oliver,
dies beiden Zeilen verwenden. Den Namen "Andere Tabelle" musst du noch anpassen.

If Sheet("Andere Tabelle").Range("A1") = "" Then Zeile = 1 Else Zeile = Sheet("Andere Tabelle").Range("A65536").End(xlUp).Row + 2
Range("A4:D10000").Copy Sheet("Andere Tabelle").Range("A" & CStr(Zeile))

Gruß
Nepumuk

Re: Leider nicht so ganz richtig
16.01.2003 18:51:50
Oiver S.
Jetzt kommt leider ein Fehler beim Kompilieren. Weiter heist es Sub oder Funktion nicht definiert und das Wort Sheet wird blau markiert. Woran kann das liegen?

Hast Du eine Idee?

Gruß,
Oliver

Re: Leider nicht so ganz richtig
16.01.2003 18:56:01
Nepumuk
Hallo Oliver,
sollte auch Sheets heißen und nicht Sheet.
Tiefbestürzt über mene Nachlässigkeit Grüßt
Nepumuk
Anzeige
Re: Leider nicht so ganz richtig
16.01.2003 19:05:17
Oiver S.
Ich nehms Dir nicht übel. ;-)

Danke und Gruß,
Oliver

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige