Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1068to1072
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

Export Liste mit bestimmten Kriterien

Export Liste mit bestimmten Kriterien
22.04.2009 13:33:13
Bernd
Hallo zusammen,
Ich würde gerne aus einer großen Liste (mehre 1000 Zeilen) relativ schnell und ressourcenschonend (meine bisherige Lösung ist mit reinen Excelformeln erstellt) eine nach bestimmten kriterien gekürzte Export-Liste erstellen.
Ich habe die "Anforderungen" in eine Mustervorlage reingeschrieben, ich hoffe Sie sind so eindeutig formuliert. Doppelte Datensätze (Kriterium Spalte 2 der Quelldaten) sollten möglichst nicht vorkommen. Wenn das Makro diese Bedingung miteinbeziehen könnte wäre das toll, aber ich bin auch mit einer Lösung zufrieden, in der "Doppler" vorkommen würden.
Hier der Link zur Musterdatei:
https://www.herber.de/bbs/user/61354.xls
Viele Grüße und Danke schon mal für die Mühe
Bernd

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Export Liste mit bestimmten Kriterien
22.04.2009 14:21:04
ptonka
Hallo Bernd,
ich habe in Deiner Datei folgende Änderungen vorgenommen (ist dann einfacher nachzuvollziehen):
Blatt 1 mit Deinen Daten heisst: Daten
Blatt 2 mit dem Export heisst: Export
Deine Daten beginnen ab Zelle A1
Dann u.a. Makro(s) einfügen und ausführen:
Public ErsteZeile, LetzteZeile As Integer

Sub export()
Dim iZeile As Long
Sheets("Daten").Select
ErsteZeile = ActiveSheet.UsedRange.Cells(1).Row
LetzteZeile = [A65536].End(xlUp).Row
BereichA = "A" & ErsteZeile & ":B" & LetzteZeile
BereichD = "D" & ErsteZeile & ":D" & LetzteZeile
BereichK = "K" & ErsteZeile & ":M" & LetzteZeile
alle = BereichA & ", " & BereichD & ", " & BereichK
Range(alle).Select
Selection.Copy
Sheets("Export").Select
Range("A1").Select
ActiveSheet.Paste
Range("A1").Select
Call doppelte
End Sub



Sub doppelte()
Dim lloZeile As Long, liSpalte As Integer, lloStart As Long, lloDurchlauf As Long
lloStart = 2
liSpalte = 2
For lloZeile = lloStart To Cells(Rows.Count, liSpalte).End(xlUp).Row
For lloDurchlauf = Cells(Rows.Count, liSpalte).End(xlUp).Row To lloStart Step -1
If Cells(lloZeile, liSpalte - 1).Value & Cells(lloZeile, liSpalte).Value =  _
Cells(lloDurchlauf, liSpalte - 1).Value & Cells(lloDurchlauf, liSpalte).Value And _
lloDurchlauf  lloZeile Then
Rows(lloDurchlauf & ":" & lloDurchlauf).Delete Shift:=xlUp
End If
Next
Next
End Sub


Gruß,
Ptonka

Anzeige
AW: Export Liste mit bestimmten Kriterien
22.04.2009 16:33:30
Bernd
Hallo,
danke zunächst für die schnelle Antwort!
Leider komme ich noch nicht ganz klar mit der Lösung/Code. Ich musste leider Excel schon mehrmals "abstürzen" lassen, weil es sich aufgehängt hatte:
Was mir erstmal auffällt: Die Verarbeitung der Originaldaten sollte erst ab Zeile 12 "losgehen", Zeile 11 befinden sich die Spaltenköpfe der Liste. In den Zeilen 1-10 sind noch andere Informationen enthalten, die aber mit der Liste an sich nichts zu tun haben.
Die Originalliste enthält ca. 1500 Zeilen, ich kann also doch den Code "LetzteZeile = [A65536]." auf [A1500] ändern, oder?
In Spalte 1 der Originaldaten sind ja Bezeichnungen erfasst wie Gruppe X, Gruppe Y. Mir war es ja wichtig, dass nur bestimmte Gruppen ein den Export einfließen (1. Bedingung in meiner Musterdatei). Wenn sich also auch Datensätze mit einer Gruppe Z in der Orginaldatei finden sollten, dann sollten diese nicht in den Export éinfließen. Eventuell bezieht sich darauf dieser Teil des Codes bzw. wenn nicht, was bedeutet dieser Codeteil?
BereichA = "A" & ErsteZeile & ":B" & LetzteZeile
BereichD = "D" & ErsteZeile & ":D" & LetzteZeile
BereichK = "K" & ErsteZeile & ":M" & LetzteZeile
alle = BereichA & ", " & BereichD & ", " & BereichK
Viele Grüße
Bernd
Anzeige
AW: Export Liste mit bestimmten Kriterien
22.04.2009 22:24:15
Daniel
HI
probier mal diesen Code:

Sub Export_Datei_Erstellen()
'--- Benannte Spalten Kopieren
Intersect(Sheets("Basis").Cells(12, 1).CurrentRegion, Sheets("Basis").Range("A:B,D:D,K:M")). _
Copy
Sheets("Export").Cells(1, 1).PasteSpecial xlPasteValues
With Sheets("Export").UsedRange
'--- Werte Löschen, die nicht in Gruppe X und Y sind
With Columns(1)
.Replace "Gruppe X", ""
.Replace "Gruppe Y", ""
.Offset(1, 0).SpecialCells(xlCellTypeConstants).EntireRow.ClearContents
End With
'--- Doppelte Eleminieren
.Sort key1:=.Cells(1, 2), order1:=xlAscending, header:=xlYes
With .Cells(1, 1).CurrentRegion.Columns(1)
.FormulaR1C1 = "=if(RC2=R[1]C2,"""", 0)"
.Formula = .Value
.EntireRow.Sort key1:=.Cells(1, 1), order1:=xlAscending, header:=xlYes
.SpecialCells(xlCellTypeBlanks).EntireRow.Clear
.EntireColumn.Delete
End With
End With
End Sub


Gruß, Daniel

Anzeige
AW: Export Liste mit bestimmten Kriterien
23.04.2009 10:35:31
Bernd
Hallo Daniel,
danke für Dein Makro! Leider bleibt das Makro bei der Anweisung
.Offset(1, 0).SpecialCells(xlCellTypeConstants).EntireRow.ClearContents
hängen. Was könnte das Problem sein?
Zusatzfrage: Könnte man den Code nach '--- Werte Löschen, die nicht in Gruppe X und Y sind
so umgestalten, dass nicht die Werte eingetragen werden, die ausgeschlossen sein sollen, sondern nur die Werte, die explizit in den Export fließen sollen?
Viele Grüße
Bernd
AW: Export Liste mit bestimmten Kriterien
24.04.2009 00:40:47
Daniel
Hi
der Fehler kommt daher, das die .USEDRANGE sich nicht wie von mir erwartet verhält.
ändere mal diese Zeile:

With Sheets("Export").UsedRange


so ab:


With Sheets("Export").Cells(1, 1).CurrentRegion


zur zweiten Frage:
klar, kann man sicherlich machen, allerdings verstehe ich noch nicht so richtig, was du willst.
Gruß, Daniel

Anzeige
AW: Export Liste mit bestimmten Kriterien
24.04.2009 07:32:47
Bernd
Hallo Daniel,
die Liste, aus der ich einen Export machen möchte, enthält deutlich mehr Datensätze, als dann in den Export einfließen sollen. Dabei ist das 1. Kriterium in Spalte A. Ich weiß auch ganz genau, welche Werte dieses Kriterium in Spalte A gesetzt sein muss, um für den Export relevant zu sein, Deshalb wäre es doch besser dieses spezielle Kriterioum im Code vorzugeben, als stattdessen die nicht relevenaten Kriterien auszuschließen, oder?
Ich hoffe, ich konnte mich eingermaßen verständlich ausdrücken!
Viele Grüße und schon mal schäönes Wochenende!
Bernd
AW: Export Liste mit bestimmten Kriterien
24.04.2009 10:31:10
Bernd
Hallo Daniel,
leider bleibt der Code bei Ausführung hier hängen:
.Offset(1, 0).SpecialCells(xlCellTypeConstants).EntireRow.ClearContents
Gruß
Bernd
Anzeige
AW: Export Liste mit bestimmten Kriterien
25.04.2009 03:30:47
Daniel
Hi
wenn der Code da hängen bleibt, gibt es keine Zellen, die gelöscht werden sollten.
aufgrund deiner beschreibung bin ich aber davon ausgegangen, das das nicht vorkommt.
ist halt das Problem von Specialcells, daß es einen Fehler gibt, wenn keine Zelle die bedingugn erfüllt.
da hilft dann nur, das ganze in ON ERROR einzurahmen:

on error resume next
.Offset(1, 0).SpecialCells(xlCellTypeConstants).EntireRow.ClearContents
on error goto 0


zu deiner anderen Frage:
schau dir mal in der Hilfe oder mit dem Makrorecorder die verschiedene Möglichkeiten und Varianten zu SPECIALCELLS an. Da kannst du dir dann aussuchen, welche Werte du angeben willst.
falls du den Makrorekorder verwendest, SPECIALCELLS entspricht der Excelfunktion BEARBEITEN - GEHE ZU - INHALTE. da kannst du auch die verschiedenen Möglichkeiten probieren.
Gruß, Daniel

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige