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

per Makro: sortieren, löschen, kopieren

per Makro: sortieren, löschen, kopieren
02.05.2008 10:08:00
sile1234
Hallo,
ich hab eine kleine Herrausforderung mit einem Makro. Ich hab eine Excel Tabelle die ich auch einen anderen Programm exportiert geliefert bekomme. Leider ist das Format der Tabelle beim Export nicht anpassbar. Ich habe eine weitere Tabelle in die ich die Daten per Makro einlesen möchte. Auch da ist die Struktur fest vorgegeben.
Ich muss nun also die Export-Tabelle öffnen per Makro, einen Bereich markieren, diesen nach einer bestimmten Spalte sortieren, dann Zeilen die einen bestimmten Wert beinhalten löschen und dann die Informationen die noch da sind spaltenweise kopieren in die neue Tabelle.
Ich bekomme es soweit hin die Exportdatei zu öffnen per Makro und den Bereich der sortiert werden soll zu markieren. Die Sortierung und der Rest hingegen scheitert. Ich hab eine Makro aufgezeichnet mit dem Rekorder für das sortieren. Aber wenn ich das aus der anderen Datei heraus starte, gibt es eine Fehlermeldung.
So sieht das aufgezeichnete Makro aus:
Range("A2:D85").Select
Selection.Sort Key1:=Range("D2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Und so habe ich es in die andere Datei eingebunden:
Workbooks("liste.xls").Sheets(1).Range("A2:D85").Select
Workbooks("liste.xls").Selection.Sort Key1:=Range("D2"), Order1:=xlAscending, Header:=xlGuess,
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Aber das funktioniert wie gesagt so nicht. Hat jemand eine Idee und vielleicht auch zu den anderen Dingen die noch ausstehen?
Die Datei ist folgendermassen aufgebaut:
- 1. Zeile ist unwichtig und kann ignoriert werden
- ab der 2. Zeile kommen Einträge die wie folgt strukturiert sind
Vorname Leerzelle Nachname Wert
Die Tabelle soll also nach Wert sortiert werden. Dann sollen alle Zeilen die in Wert gelöscht stehen haben entfernt werden. Zum Schluß noch die Spalten einzeln ab Zeile 2 bis letzten Eintrag kopiert werden.
Hoffe das war ausführlich genug für Hilfe.
Gruß
Sile1234

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Referenzieren
02.05.2008 11:19:00
ChristianM
Hallo Sile,
probier's mal so:

With Workbooks("liste.xls").Sheets(1)
.Range("A2:D85").Sort Key1:=.Range("D2"), Order1:=xlAscending, Header:=xlGuess,
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End With

Gruß
ChristianM

AW: Referenzieren
02.05.2008 11:40:46
sile1234
Leider bekomme ich da einen Syntax Fehler wenn ich das so versuche

AW: Referenzieren
02.05.2008 11:41:30
sile1234
Leider bekomme ich da einen Syntax Fehler angezeigt

AW: Referenzieren
02.05.2008 11:58:20
ChristianM
Hallo,
in dem von mir geposteten Code fehlt hinter "Header:=xlGuess," noch ein "_"
Die Datei mit den zu sortierenden Daten heißt "liste.xls" und muss geöffnet sein.
Gruß
ChristianM

Anzeige
AW: Referenzieren
02.05.2008 12:09:00
sile1234
Die Datei wird ja durch das Makro vorher geöffnet. Aber auch das behebt den Fehler leider nicht :(

AW: Referenzieren
02.05.2008 13:31:24
ChristianM
ich hab den Code mit XL2002 getestet. Läuft fehlerfrei.
Entweder steckt bei dir noch ein anderer Fehler oder der Code von mir läuft unter XL2000 nicht. Letzteres kann ich mir aber nur schwer vorstellen...
Sind die Daten denn in Sheet(1) ? Das ist das erste Blatt ganz links. Ist dieses Blatt ein Tabellenblatt oder evt ein Diagramm?
Mein Vorschlag:
Füge nur diesen Code-Teil in eine neues Makro ein. Öffne eine Daten-Datei mit dem Namen "liste.xls" und führe den Code aus. Wenn's dann läuft, weißt du, dass der Fehler nicht hier liegt.
ChristianM

Anzeige
AW: Referenzieren
02.05.2008 13:48:00
sile1234
So, da bin ich wieder :)
Ja, es ist das erste und einzige Blatt in der Tabelle. Ich habe nun nur diesen Codeteil genommen und bekommen folgenden Teil als Fehlerhaft angezeigt "Key1:=.Range("D2")"
Er sagt als Fehler: Erwartet Anweisungsende

AW: Referenzieren
02.05.2008 13:55:40
ChristianM
da muss irgendwo ein Schreibfehler sein...
Poste deinen Code nochmal.

AW: Referenzieren
02.05.2008 14:05:32
sile1234

Sub Makro1()
With Workbooks("liste.xls").Sheets(1).Range("A2:D85").Sort Key1:=.Range("D2"), Order1:= _
xlAscending, Header:=xlGuess,_
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End With
End Sub


So sieht es aus und er bemängelt immer den einen Punkt

Anzeige
AW: Referenzieren
02.05.2008 14:15:06
ChristianM

Sub Makro1()
With Workbooks("liste.xls").Sheets(1)
.Range("A2:D85").Sort Key1:=.Range("D2"), Order1:= _
xlAscending, Header:=xlGuess,_
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
End With
End Sub

man muss sich schon an die Konventionen halten - kannst ja nicht einfach den Zeilenumbruch nach "With Workbooks("liste.xls").Sheets(1)" löschen.

AW: Referenzieren
02.05.2008 14:22:00
sile1234
Ok, gab zwar noch nen syntax Fehler aber den hab ich beheben können. Super das sortieren klappt so wie gewollt *freu*
Nun schau ich mal nach dem Rest

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige