Microsoft Excel

Herbers Excel/VBA-Archiv

Overflow bei zeilenweisem vergleichen

Betrifft: Overflow bei zeilenweisem vergleichen von: Bernhard Stillger
Geschrieben am: 10.09.2004 10:46:15

Servus,

da habe ich nun endlich ein VB Makro welches mir doppelte Zeilen anhand einzelneer Felder markiert -

und dann bekopmme ich einen overflow.

Es sind 47973 Zeilen und die Salten A bis BS

Und das Makro das Probleme macht ist einfach aber funktionierte bisher:

Sub Doppelte_Zeilen_Spalte1_sortieren_und_markieren()
    ' vergleicht dann alle uebereinander liegenden Felder in Spalte A und markiert die doppelten Spalten rot

' Anzahl der Zeilen wird in A festgestellt
' Es gibt eine Überschriftenzeile
    Dim I As Integer ' Startzeile ist Zeile 2 wegen der Überschrift
    Dim J As Integer ' Durchlaufender Zähler
        For I = 2 To Cells(Rows.Count, 1).End(xlUp).Row
        For J = Cells(Rows.Count, 1).End(xlUp).Row To I + 1 Step -1
            If Cells(I, 1) = Cells(J, 1) And Cells(I, 4) = Cells(J, 4) Then
                Rows(J).Interior.ColorIndex = 3
                ' Rows(J).Delete
            End If
        Next J
    Next I
End Sub


Hat jemand eine Idee weshalb ich einen Fehler wie folgt bekomme:
Runtime error (6)
Overflow

Der Debuger geht dann in die Zeile:
For I = 2 To Cells(Rows.Count, 1).End(xlUp).Row

Danke fuer Eure Hilfe.

Bernhard Stillger
  


Betrifft: AW: Overflow bei zeilenweisem vergleichen von: Bernhard
Geschrieben am: 10.09.2004 11:23:29

Servus,

als Anmerkung noch:

Ich habe eine Rechner mit 1 GB RAM und einem P4 M 2,2 GHz.

Aber ich denke es ist kein Hardwareproblem.

Gruss


Bernhard


  


Betrifft: AW: Overflow bei zeilenweisem vergleichen von: ypsilon
Geschrieben am: 10.09.2004 11:31:36

hi Bernhard
wenn du dann mal i als long deklarierien würdest ;-)
cu Micha


  


Betrifft: AW: Overflow bei zeilenweisem vergleichen von: Bernhard
Geschrieben am: 10.09.2004 14:10:07

Hallo ypsilon,

vielen Dank.

Ich musst allerding I und J als Long deklarieren. Nur "I" brachte trotzdem einen overflow.

Aber die Performance ist ja grottenschlecht. kann man das irgendwie beschleunigen ?

Da gab es doch einen VB Parameter, der das Disply nicht jedesmal aktualisierte.


Wo finde ich diesen oder wie heist er und wie baue ich den denn ein; dann sollte es doch schneller werden, oder ?

Gruss


Bernhard


  


Betrifft: AW: Overflow bei zeilenweisem vergleichen von: yps
Geschrieben am: 10.09.2004 17:22:07

hi Bernhard,
wozu brauchst du J ?
wenn du sowieso nur die darüberligende zeile vergleichen willst reicht I
und der "parameter" ist auch eingebaut ;-)

Sub Doppelte_Zeilen_Spalte1_sortieren_und_markieren2()
Dim I As Long
ScreenUpdating = False
For I = 3 To Cells(Rows.Count, 1).End(xlUp).Row
If Cells(I - 1, 1) = Cells(I, 1) And Cells(I - 1, 4) = Cells(I, 4) Then
    Rows(I).Interior.ColorIndex = 3
End If
Next I
ScreenUpdating = True
End Sub


cu Micha


  


Betrifft: Performance hierzu schlecht von: Bernhard
Geschrieben am: 10.09.2004 18:20:50


Hallo,

der Rueffel ist angekommen - obwohl es fuer mich verschiedene Fragen sind.
Aber trotzdem, machen wir hier weiter:

Die Performance bei meinem Problem ist grottenschlecht.
Jetzt habe ich schon das aktualisieren des Bildschirm unterdrueck (Application.ScreenUpdating = False) und loesche auch nicht gleich sondern markiere in Rot und in Spalte BV mit X.

Aber er benoetigt fuer ca. 1000 Yeilen 6 Minuten. Und ich habe uebr 47000 :-(

Geht es irgendwie schneller ?

Gruss


Bernhard


  


Betrifft: AW: Performance hierzu schlecht von: yps
Geschrieben am: 10.09.2004 19:33:36

liest du eigentlich mal was man dir so schreibt ?
schau dir doch einfach mal meinen letzten post in diesem thread an
cu Micha


  


Betrifft: AW: Performance hierzu schlecht von: Bernhard
Geschrieben am: 10.09.2004 20:27:39


Hallo yps,

klar habe ich das gelesen. Ich hatte es jedoch nicht als Performancesteigernd erkannt, sondern als verbesserte, wereinfachte Art das gleioche zu tun :-).
Also werde ich es gleich einmal ausprobieren - und gebe Dir Bescheid was dabei herausgekommen ist. Danke fuer deine Hilfe.

Gruss


Bernhard


  


Betrifft: AW: Performance hierzu schlecht von: yps
Geschrieben am: 10.09.2004 21:26:32

hi Bernhard,
wenn du eine schleife weglässt sparst du ja nur rund 50.000 mal 50.000 durchläufe ;-)
warum sollte das auch schneller sein ? *grins*
cu Micha


  


Betrifft: Zps performt wie ... super schnell - Danke von: Bernhard
Geschrieben am: 10.09.2004 22:13:21


Man ist das schnellÖ

Start Time End Time Start Line End Line Methode Zeit
81 82 83 84 85 86
21:33:11 21:36:33 00:03:22
21:36:33 21:36:33 38000 38001 Alt 00:00:00
21:37:06 21:37:06 38000 38001 Alt 00:00:00
21:46:30 21:47:16 37500 38001 Alt 00:00:46
21:48:13 21:51:31 37000 38001 Alt 00:03:18
21:53:41 21:55:18 37000 38001 Alt 00:01:37
21:55:47 21:55:49 36000 37001 Neu 00:00:02
21:57:08 21:57:19 30000 36001 Neu 00:00:11
21:58:51 21:59:10 20000 30001 Neu 00:00:19
22:06:13 22:06:33 20000 30001 Schnellform von YPS 00:00:20
22:08:21 22:08:41 20000 30001 00:00:20
22:09:01 22:09:20 20000 30001 Schnellform von YPS 00:00:19
22:10:31 22:11:16 20000 20501 Erstform von mir - laaaangsam 00:00:45


 

Beiträge aus den Excel-Beispielen zum Thema "Overflow bei zeilenweisem vergleichen"