Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Bestimmte Zeilen löschen, ca. 192.000 Zeilen!!!
Gehe zu Seite 1, 2  Weiter
zurück: Verstecktes Öffnen rückgängig machen!!! weiter: Einfügen ohne ausgeblendete Zeilen/Spalten Performancefrage. Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Antwort Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
finjan
Im Profil kannst Du frei den Rang ändern


Verfasst am:
17. Aug 2011, 20:53
Rufname:

Bestimmte Zeilen löschen, ca. 192.000 Zeilen!!! - Bestimmte Zeilen löschen, ca. 192.000 Zeilen!!!

Nach oben
       Version: Office 2010

Hallo,

bezüglich meines Problems habe ich sehr viele Seiten durchforstet und verschiedene Vorschläge ausprobiert.
Doch aufgrund der großen Anzahl der zu löschenden Zeilen sind die angewandten Scripte über sehr längere Zeit
gelaufen (manche über 1,5 Stunden, manche noch länger), so dass ich diese Aktion leider noch vor Vollendung abbrechen musste.

Dann habe ich versucht, diese Zeilen ohne Code per Autofilter zu löschen, doch irgendwann gab Excel keine Rückmeldung mehr.

Habe eine Tabelle in der ca. 192.000 Zeilen komplett gelöscht werden müssen.
Die Gesamtlänge der Zeilen umfasst ca. 380.000 Zeilen, Spalten A bis H sind befüllt.
Die zu löschenden Zeilen sind in Spalte D jeweils mit einem X gekennzeichnet und dient somit als Markierung.
Die anderen Zellen ohne diese Markierung sind in Spalte D andernfalls leer.
Der Suchvorgang nach X soll ab D3 beginnen und beim Fund soll die gesamte Zeile gelöscht werden.

Für Eure Hilfe besten Dank im Voraus!

Grüße,
finjan
Thomas Ramel
Microsoft Excel-MVP


Verfasst am:
17. Aug 2011, 21:10
Rufname: Thom
Wohnort: Glashütten - CH

AW: Bestimmte Zeilen löschen, ca. 192.000 Zeilen!!! - AW: Bestimmte Zeilen löschen, ca. 192.000 Zeilen!!!

Nach oben
       Version: Office 2010

Grüezi finjan

Könntest Du denn die Daten nicht nach Spalte D sortieren?
Dann würde alle Zeilen mit 'x' drin zusammen stehen und Du könntest mit relativ wenig Code alles auf einen Schlag löschen.

GGf. dann halt anschliessend wieder zurück sortieren.

Das dürfte aber doch wesentlich schneller laufen als die Zellen einzeln abzuklappern.

_________________
Mit freundlichen Grüssen

Thomas Ramel
[Vista Ultimate SP-1 / xl2007 SP-2]
Gast



Verfasst am:
17. Aug 2011, 21:21
Rufname:

AW: Bestimmte Zeilen löschen, ca. 192.000 Zeilen!!! - AW: Bestimmte Zeilen löschen, ca. 192.000 Zeilen!!!

Nach oben
       Version: Office 2010

Hi
du musst deine Tabelle vor dem Löschen erst nach Spalte D sortieren, so daß alle zu löschenden Zeilen als ein Block zusammenstehen, dann kannst du problemlos mit dem Autofilter filtern und löschen.

Ursache ist, das Excel intern viel mit sogenannten AREAS arbeitet.
Eine Area ist ein rechteckiger, geschlossener Zellbereich, der sich mit "Zelle oben links - Zelle unten rechst" ausreichend genau beschreiben lässt.

wenn du z.B. unsortiert in deiner Tabelle jede zweite Zeile löschen willst, dann sind das 190.000 Zeilen in 190.000 Areas: "2:2,4:4,6:6,...390000:390000".
Wenn du die Zellen vor dem Löschen sortierst, dann sind das zwar auch 190.000 Zeilen, aber eine Area, nämlich "1:190.000"
für die Geswindigkeit beim Löschen ist nicht die absolute Anzah der Zeilen entscheidend, sondern die Anzahl der Areas, denn alle Areas werden gleichschnell gelöscht, egal wie gross sie sind.

Das grössere Problem ist aber, daß Excel auf einen Rutsch (z.B. in gefilterten Zellen) maximal 8192 Areas verarbeiten kann (das ist irgendwann mal so programmiert worden) dh. wenn du unstortiert jede zweite Zeile löschen wolltest, dann müsstest du die Daten in Blöcken von c.a. 16.000 Zeilen durchgehen, damit die Anzahl der Areas nicht überschritten wird (die Anzahl der Zeilen in den Areas spielt wiederum keine Rolle).

bzw inner halb der einzelnen Werte von D (X bzw leer) bleibt die Sortierung erhalten, du musst dir also keine Sorgen machen, die Originalreihenfolge der nicht gelöschten Zeillen bleibt erhalten.

Gruß Daniel

gruß, Daniel
finjan
Im Profil kannst Du frei den Rang ändern


Verfasst am:
17. Aug 2011, 21:54
Rufname:

AW: Bestimmte Zeilen löschen, ca. 192.000 Zeilen!!! - AW: Bestimmte Zeilen löschen, ca. 192.000 Zeilen!!!

Nach oben
       Version: Office 2010

Hallo Thomas, hallo Daniel,

Ihr seid schneller gewesen!

Möchte folgendes korrigieren bzw. ergänzen: "Spalten A bis H sind befüllt."
Einige Zellen in den Spalten B und C sind NICHT befüllt, andere wiederum schon.
Deshalb darf die Tabelle für den Löschvorgang nicht sortiert werden.
SORRY für diese wichtige fehlende Information.
Ist mir erst hinterher eingefallen...

Wie Daniel es ausführlich erklärt und beschrieben hat, werde ich wohl den Löschvorgang Blockweise durchführen müssen.

Vielen Dank für Eure Antworten.

Grüße,
finjan
Gast



Verfasst am:
17. Aug 2011, 22:15
Rufname:

AW: Bestimmte Zeilen löschen, ca. 192.000 Zeilen!!! - AW: Bestimmte Zeilen löschen, ca. 192.000 Zeilen!!!

Nach oben
       Version: Office 2010

Hi
gib doch nicht schnell auf.
wenn du in folgendem zenario:

A B
----
1 -
2 X
3 -
4 X
5 -
6 X

nach B sortierst, wird folgendes das Ergebnis sein:

A B
----
1 -
3 -
5 -
2 X
4 X
6 X

dh innerhalb von Spalte A bleibt die Originalreihenfolge innerhalb der Gruppen "-" und "X" erhalten das Ergebnis wird kein anderes sein, als wenn du die Zeilen mit X einzeln aus den unsortierten Daten rauslöscht.
Wenn du zweifel hast, dann füge doch vor dem Sortieren in einer Hilfsspalte einfach die Zeilennummer ein, dann kannst du du jederzeit die Originalreihenfolge wieder herstellen, falls es keinen anderweitigen Sortierschlüssel gibt.


Gruß, Daniel
Phelan XLPH
Fortgeschritten


Verfasst am:
17. Aug 2011, 22:23
Rufname: Phelan

AW: Bestimmte Zeilen löschen, ca. 192.000 Zeilen!!! - AW: Bestimmte Zeilen löschen, ca. 192.000 Zeilen!!!

Nach oben
       Version: Office 2010

Hiermit dürfte es recht fix gehen:

Code:
Sub ZeilenLöschen()
    Dim t As Single
    t = Timer
    With Tabelle1.UsedRange
        With .Columns(.Columns.Count).Offset(2, 1).Resize(.Rows.Count - 2, 1)
            .Formula = "=IF(D3=""x"",TRUE,0)"
            .Copy
            .PasteSpecial xlPasteValues
            .EntireRow.Sort .Cells(1), xlAscending, Header:=False
            On Error Resume Next
            .SpecialCells(xlCellTypeConstants, xlLogical).EntireRow.Delete
            On Error GoTo 0
            .ClearContents
        End With
    End With
    MsgBox Timer - t
End Sub

_________________
Was vorstellbar ist, ist auch machbar. - Albert Einstein
Gerd L
Just for fun


Verfasst am:
17. Aug 2011, 22:40
Rufname:
Wohnort: Mannheim

AW: Bestimmte Zeilen löschen, ca. 192.000 Zeilen!!! - AW: Bestimmte Zeilen löschen, ca. 192.000 Zeilen!!!

Nach oben
       Version: Office 2010

8192 Areas-Grenze!
_________________
Gruß Gerd
Phelan XLPH
Fortgeschritten


Verfasst am:
17. Aug 2011, 22:49
Rufname: Phelan

AW: Bestimmte Zeilen löschen, ca. 192.000 Zeilen!!! - AW: Bestimmte Zeilen löschen, ca. 192.000 Zeilen!!!

Nach oben
       Version: Office 2010

ja und das bitte x2 und du hast die maximale Zeilenanzahl.

Juckt aber in meinem Fall nicht, da zuvor sortiert wird, somit lediglich
ein Area!

_________________
Was vorstellbar ist, ist auch machbar. - Albert Einstein
slowboarder
Im Profil kannst Du frei den Rang ändern


Verfasst am:
18. Aug 2011, 00:19
Rufname:

AW: Bestimmte Zeilen löschen, ca. 192.000 Zeilen!!! - AW: Bestimmte Zeilen löschen, ca. 192.000 Zeilen!!!

Nach oben
       Version: Office 2010

Hi Phelan
schön zu sehen, dass meine Methode inzwischen ein paar Anhänger gefunden hat und ich nicht jedesmal diese Zeilen tippen muss Wink

kleiner Verbesserungsvorschlag:
schreibe die Formel in R1C1. Dann sparst du dir anpassungsarbeit, falls die UsedRange mal nicht in Zeile 1 beginnt oder die Anzahl der Überschriftenzeilen noch variiert:
.formulaR1C1 = "=If(RC4=""x"",true,0)"

Gruss Daniel
finjan
Im Profil kannst Du frei den Rang ändern


Verfasst am:
18. Aug 2011, 10:14
Rufname:

AW: Bestimmte Zeilen löschen, ca. 192.000 Zeilen!!! - AW: Bestimmte Zeilen löschen, ca. 192.000 Zeilen!!!

Nach oben
       Version: Office 2010

Hallo Phelan, hallo Daniel,

VIELEN DANK!!!! für Eure Unterstützung.
Es hat mit dem Code (incl. Verbesserungsvorschlag von Daniel) WUNDERBAR geklappt!! :o)
Timer-Ausgabe: 5,855469 Sekunden!!!

Nochmals Dankeschön!!!

Grüße,
finjan
slowboarder
Im Profil kannst Du frei den Rang ändern


Verfasst am:
18. Aug 2011, 10:25
Rufname:

AW: Bestimmte Zeilen löschen, ca. 192.000 Zeilen!!! - AW: Bestimmte Zeilen löschen, ca. 192.000 Zeilen!!!

Nach oben
       Version: Office 2010

Und das beste finde ich immer noch:
wenn du die Aktionen des Makros von Hand ausführst, dann brauchst du dafür nur unbedeutend länger, nämlich solange, wie du benötigst um die Formel einzutippen und ein paar Mauslklicks auszuführen, also mit Übung vielleicht max 1-2 Minuten!

dh. viele Probleme kann man bei entsprechender Datenmenge mit ein klein wenig Excelknowhow schneller bearbeiten, als so manches mittelmäßig geschriebene Makro.

Gruß, Daniel
kaju
VBA-Einsteiger seit 05.2011


Verfasst am:
23. Aug 2011, 19:20
Rufname:

AW: Bestimmte Zeilen löschen, ca. 192.000 Zeilen!!! - AW: Bestimmte Zeilen löschen, ca. 192.000 Zeilen!!!

Nach oben
       Version: Office 2010

Hallo finjan,

bring das mal in Deinem Modul unter, und ein call Turbo_ein vor Deine Routine, und ein call Turbo_aus nach Deiner Routine.
Dann vergleich mal die Zeiten.

Code:

Sub Turbo_aus()
'
' Tubo_aus Makro
' Reaktiviert Bremsen während der VBA-Ausführung
'
With Application
  .Calculation = xlCalculationAutomatic   'Berechnung auf Automatic
  .ScreenUpdating = True                  'Bildschirmaktualisierung ein
  .EnableEvents = True                    'Ereignismakros einschalten
  .Cursor = xlDefault                     'Sanduhr ausschalten
End With

End Sub

Sub Turbo_ein()
'
' Tubo_ein Makro
' Deaktiviert Bremsen während der VBA-Ausführung
'
With Application
  .Calculation = xlCalculationManual  'Berechnung auf manuell
  .ScreenUpdating = False             'Bildschirmaktualisierung aus
  .EnableEvents = False               'Ereignismakros abschalten
  .Cursor = xlDefault                 'Sanduhr ausschalten
End With

End Sub


Gruß, Kai
cyless
Gast


Verfasst am:
29. Apr 2014, 14:34
Rufname:

AW: Bestimmte Zeilen löschen, ca. 192.000 Zeilen!!! - AW: Bestimmte Zeilen löschen, ca. 192.000 Zeilen!!!

Nach oben
       Version: Office 2010

Hallo zusammen und danke vielmals für die highspeed varianten.

konnte den code von Phelan XLPH gut bei mir anwenden.
Auch .formulaR1C1 = "=If(RC4=""x"",true,0)" war ein top tipp!

Ist es auch möglich nur die ersten drei zeichen aus der kennzeichnenden Zelle auszulesen und als löschargument anzugeben?

bsp.:

255_T154
255_T574

Würde gern alle Zeilen löschen, die in Spalte B mit "255" beginnen.

Danke und Gruß!
Phelan XLPH
Fortgeschritten


Verfasst am:
29. Apr 2014, 15:06
Rufname: Phelan

AW: Bestimmte Zeilen löschen, ca. 192.000 Zeilen!!! - AW: Bestimmte Zeilen löschen, ca. 192.000 Zeilen!!!

Nach oben
       Version: Office 2010

Hallo,

pass einfach die Formel an: =If(Left(RC4,3)=""255"",true,0)

_________________
Was vorstellbar ist, ist auch machbar. - Albert Einstein
cyless
Gast


Verfasst am:
30. Apr 2014, 07:52
Rufname:

AW: Bestimmte Zeilen löschen, ca. 192.000 Zeilen!!! - AW: Bestimmte Zeilen löschen, ca. 192.000 Zeilen!!!

Nach oben
       Version: Office 2010

Funktioniert prima!

Der Befehl FormulaR1C1 ist mir komplett neu.

With .Columns(.Columns.Count).Offset(3, 1).Resize(.Rows.Count - 2, 1)

FormulaR1C1 = "=If(Left(RC2,3)=""100"",true,0)

Die fett markierten codeschnipsel verstehe ich zwar nicht aber läuft alles astrein Razz

Danke vielmals für eure Hilfe Smile
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Gehe zu Seite 1, 2  Weiter
Diese Seite Freunden empfehlen

Seite 1 von 2
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

Verwandte Themen
Forum / Themen   Antworten   Autor   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Excel Formeln: Zeilen mit Wert 0 ausblenden 2 MartinJungwirth 1448 24. Jun 2005, 13:53
MartinJungwirth Zeilen mit Wert 0 ausblenden
Keine neuen Beiträge Excel Formeln: Farbige Zeilen bei verschiedenen Kriterien 10 Nixweis 1254 09. Jun 2005, 13:59
Nixweiß Farbige Zeilen bei verschiedenen Kriterien
Keine neuen Beiträge Excel Formeln: Leere Zeilen mit Formel ausblenden 4 austin1980 2980 21. Apr 2005, 20:33
Günni Leere Zeilen mit Formel ausblenden
Keine neuen Beiträge Excel Formeln: Leere Zeilen vom Kombinationsfeld löschen 5 sifak 1332 19. Apr 2005, 17:11
Hübi Leere Zeilen vom Kombinationsfeld löschen
Keine neuen Beiträge Excel Formeln: Gibt es eine Formel mit der man Zeilen löschen kann? 5 kara ben nemsi 1956 15. Apr 2005, 10:19
Kuwe Gibt es eine Formel mit der man Zeilen löschen kann?
Keine neuen Beiträge Excel Formeln: bestimmte Zellen farblich Markieren 3 PLX 825 17. März 2005, 12:58
Gast bestimmte Zellen farblich Markieren
Keine neuen Beiträge Excel Formeln: Vergleichen von Spalten UND Zeilen. 3 mojoe321 1836 15. März 2005, 17:14
Hübi Vergleichen von Spalten UND Zeilen.
Keine neuen Beiträge Excel Formeln: Excel Daten in Word an eine bestimmte stelle einfügen 7 Anne 2260 04. März 2005, 13:10
The BOO-M-AN Excel Daten in Word an eine bestimmte stelle einfügen
Keine neuen Beiträge Excel Formeln: Verknüpfung zu anderer xls-Datei löschen 3 cerkens78 1745 19. Jan 2005, 12:46
Kuwe Verknüpfung zu anderer xls-Datei löschen
Keine neuen Beiträge Excel Formeln: Zeilen Minimum 2 -Christoph- 1736 22. Nov 2004, 13:01
-Christoph- Zeilen Minimum
Keine neuen Beiträge Excel Formeln: sverweis + darunterliegende Zeilen 7 L*R 3701 12. Nov 2004, 13:55
Arnim sverweis + darunterliegende Zeilen
Keine neuen Beiträge Excel Formeln: Kann ich Zeilen "einfrieren"? 1 Chrisi 1115 08. Sep 2004, 13:01
fl618 Kann ich Zeilen "einfrieren"?
 

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: PHP JavaScript