Anzeige
Archiv - Navigation
1196to1200
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

Ich versteh Excel nicht & Kopieren dauert zu lange

Ich versteh Excel nicht & Kopieren dauert zu lange
abu
Hallo zusammen,
ich sitze mal wieder vor einem Problem und hoffe ihr koennt mir helfen.
Ich moechte gerne eine Tabelle mit ca. 5000 Zeilen auswerten. Dazu lese ich die Daten die ich brauche in ein Array ein und pruefe ein paar Dinge. Nun stosse ich auf 2 Probleme.
1. Wenn ich untenstehenden Code laufen lasse, bekomm ich die richtigen Ergebnisse. Wenn ich aber die Abfrage die als Kommentar noch dazu nehme, dann sind alle Ergebnisse in diesem Block komplett falsch. Woran liegt das? Es hat doch nichts mit den anderen Abfragen zu tun.
2. Ich moechte die Zeilen in eine anderes Blatt kopieren, macht er auch. Bei einer Abfrage komme ich auf ca. 700 Zeilen und das macht das Makro schon ziemlich langsam. Gibt es eine schnellere Methode?
Wuerde mich ueber Rat echt freuen.
Beste Gruesse
abu
With Worksheets("Sheet1")
ReDim leseData(2 To leZeile, 1 To 10)
For z = 2 To leZeile
leseData(z, 1) = .Cells(z, 2) ' Delivery
leseData(z, 2) = .Cells(z, 8) ' Order receipt
leseData(z, 3) = .Cells(z, 10) ' DHL/Pre
leseData(z, 4) = .Cells(z, 17) ' Shipping Date
leseData(z, 5) = .Cells(z, 18) ' Departure date
leseData(z, 6) = .Cells(z, 32) ' Acknoledge
leseData(z, 7) = .Cells(z, 35) ' Number order lines
leseData(z, 8) = .Cells(z, 36) ' Units received
leseData(z, 9) = .Cells(z, 37) ' Pick lines
leseData(z, 10) = z
If leseData(z, 4) = KPIDatum Then deliveriesreceived = deliveriesreceived + 1
If leseData(z, 4) = KPIDatum Then orderlinesreceived = orderlinesreceived + leseData(z, 7)
If leseData(z, 4) = KPIDatum Then unitsreceived = unitsreceived + leseData(z, 8)
If leseData(z, 4) = KPIDatum Then
If leseData(z, 3) = "DHL" Then DHLpicklinesreceived = DHLpicklinesreceived + leseData(z, 9)
If leseData(z, 3) = "Pre Planned" Then PREpicklinesreceived = PREpicklinesreceived + leseData(z, 9)
End If
If leseData(z, 4) = KPIDatum Then
If leseData(z, 3) = "DHL" Then
If leseData(z, 6) = "" Then
DHLnotshipped = DHLnotshipped + 1
Rows(z).Copy Worksheets("DHLnotshipped").Rows(DHLnotshipped)
End If
If leseData(z, 6) > KPIDatum.Text Then
DHLnotshipped = DHLnotshipped + 1
Rows(z).Copy Worksheets("DHLnotshipped").Rows(DHLnotshipped)
End If
If leseData(z, 6) "" Then
If leseData(z, 6) DHLshipped = DHLshipped + 1
Rows(z).Copy Worksheets("DHLshipped").Rows(DHLshipped)
End If
End If
End If
If leseData(z, 3) = "Pre Planned" Then
If leseData(z, 6) = "" Then
PREnotshipped = PREnotshipped + 1
Rows(z).Copy Worksheets("PREnotshipped").Rows(PREnotshipped)
End If
If leseData(z, 6) > KPIDatum.Text Then
PREnotshipped = PREnotshipped + 1
Rows(z).Copy Worksheets("PREnotshipped").Rows(PREnotshipped)
End If
' If leseData(z, 6) "" Then
' If leseData(z, 6) ' PREshipped = PREshipped + 1
' Rows(z).Copy Worksheets("PREshipped").Rows(PREshipped)
' End If
' End If
End If
End If
Next z
End With

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Falsche Ergebnisse
08.02.2011 16:29:35
abu
Das mit dem Kopieren hat sich erledigt. Hatte noch eine andere Pivot-Tabelle geoffnet die er neu berechnet hat was alles ziemlich verlangsamt hat.
Bleibt die Frage warum alle anderen Ergebnisse falsch sind wenn ich die Abfrage mit einbaue.
Gruss
abu
Weil leseData(z, 6) > KPIDatum.Text idR...
08.02.2011 20:06:56
Luc:-?
…leseData(z, 6) "" auch erfüllt, du nirgendwo das ausschließende If…Then…ElseIf…Then…Else…End If verwendest und außerdem offensichtl Texte vglst, wodurch nicht immer klar ist, was wirklich passiert, Abu.
Bei KPIDatum.Text handelt es sich offensichtl um einen Text, auch wenn in der Zelle ein echtes, formatiertes Datum steht. Miit .Text wird nämlich das Forma­tierungs­ergebnis ausgegeben, mit .Value der unformatierte Wert.
Außerdem wäre es schön, wenn deine Pgmm strukturiert wären (Block­einrüc­kungen). Falls sie das im Original sind, behältst du das bei, wenn du den Zitat-Button benutzt.
Gruß Luc :-?
Anzeige
Beim Kopieren hackts?
09.02.2011 10:47:19
abu
Hallo Luc und alle anderen,
erstmal danke. Ich habe nun rausgefunden das es an der Zeile liegt:
Rows(z).Copy Worksheets("PREshipped").Rows(PREshipped)  
Wenn ich diese Zeile im Code habe, bekomme ich nur falsche Ergebnisse. Wenn ich nur diese Zeile rausnehme, dann sind alle Ergebnisse richtig.
Das verstehe ich nicht, was hat das Kopieren mit den If-Abfragen zu tun? Verwende diesen Code ja auch bei allen anderen Abfragen ohne Probleme.
Kann mir das jemand erklaeren?
Gruss
abu
@Luc: ich werde den Zitat-Button benutzen in Zukunft.
Ich bekomme ganz bes...... Daten hier. Ich muss Daten vergleichen die in den Spalten unterschiedliche Formate haben. Hatte zuerst mit Filtern gearbeitet aber habe es einfach nicht hinbekommen mit groesser und und kleiner als zu Filtern wegen den Formaten. Darum nun so. KPIDatum und KPIDatum.Text geben die Formate wieder die ich in den Spalte vorfinde. Es funktioniert also denke ich ist das OK.
Wenn ich mit ElseIF arbeite, bekomme ich genau die selben Ergebnisse wie oben beschrieben:

If leseData(z, 4) = KPIDatum Then
If leseData(z, 6) = "" And leseData(z, 3) = "DHL" Then
DHLnotshipped = DHLnotshipped + 1
Rows(z).Copy Worksheets("DHLnotshipped").Rows(DHLnotshipped)
ElseIf leseData(z, 6) = "" And leseData(z, 3) = "Pre Planned" Then
PREnotshipped = PREnotshipped + 1
Rows(z).Copy Worksheets("PREnotshipped").Rows(PREnotshipped)
ElseIf leseData(z, 6) > KPIDatum.Text And leseData(z, 3) = "DHL" Then
DHLnotshipped = DHLnotshipped + 1
Rows(z).Copy Worksheets("DHLnotshipped").Rows(DHLnotshipped)
ElseIf leseData(z, 6) > KPIDatum.Text And leseData(z, 3) = "Pre Planned" Then
PREnotshipped = PREnotshipped + 1
Rows(z).Copy Worksheets("PREnotshipped").Rows(PREnotshipped)
ElseIf leseData(z, 6)  "" And leseData(z, 6)  "" And leseData(z, 6) 

Anzeige
Problem gefunden.
09.02.2011 12:51:14
abu
Die Zeit ist mit den Dummen. Halte das Ausgangsdatum fuer alles mit Activesheet fest was ziemlich daemlich ist.
Na also, geht doch... ;-) Gruß owT
10.02.2011 04:16:27
Luc:-?
:-?

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige