Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
532to536
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
532to536
532to536
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Wer kann bestehendes Makro erweitern?

Wer kann bestehendes Makro erweitern?
18.12.2004 18:05:06
Jens
Hallo Excelfreunde,
ich habe folgendes Makro das alle Zeilen löschen soll, welche im Bereich der Spalten 6 zu 188 keine Daten enthalten.

Sub ZeilenLöschen()
For i = [a65536].End(xlUp).Row To 1 Step -1
If WorksheetFunction.CountA(Range(Cells(i, 6), Cells(i, 188))) = 0 Then
Rows(i).Delete
End If
Next
End Sub

Jetzt habe ich das Problem daß auch manche Zellen eine 0 enthalten.
Deshalb sollte das Makro insofern erweitert werden:
Wenn im oben genannten Bereich alle Zellen leer sind oder eine 0 enthalten, soll die ganze Zeile gelöscht werden. Ich habe ein Arbeitsblatt das über 50.000 Zeilen enthält.
Besten Dank im voraus
Jens

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

Betreff
Datum
Anwender
Anzeige
AW: Wer kann bestehendes Makro erweitern?
Georg
Hallo,
meine Kenntnisse reichen nicht für eine Änderung.
Ein Ansatz wäre aber:
Kopiere Dein Makro und ändere es von "188" auf"0". Und lass es innerhalb Deines Makros noch mal laufen
...End If
Next
Call "Dein Makro"
End Sub
Vielleicht kannst Du damit etwas anfangen.
Grüße
Georg
AW: Wer kann bestehendes Makro erweitern?
18.12.2004 23:31:05
Josef
Hallo Jens!
So sollte es klappen!

Sub ZeilenLöschen()
Dim i As Long
For i = [a65536].End(xlUp).Row To 1 Step -1
If WorksheetFunction.CountBlank(Range(Cells(i, 6), Cells(i, 188))) + _
WorksheetFunction.CountIf(Range(Cells(i, 6), Cells(i, 188)), 0) = 183 Then
Rows(i).Delete
End If
Next
End Sub

Gruß Sepp
Anzeige
AW: Wer kann bestehendes Makro erweitern?
19.12.2004 12:17:41
Jens-Claus
Hallo Sepp,
herzlichen Dank für deine rasche Hilfe.
Noch eine Frage zu deinem Makro,was bedeutet , hat es einen Einflusse
wenn ich die Spaltenbreite von 188 auf 220 erweitere.
Besten Dank im voraus für Rückantwort.
Jens
AW: Wer kann bestehendes Makro erweitern?
19.12.2004 12:25:02
Josef
Hallo Jens!
"=183" ist die Spaltenanzahl in deinem Bereich!
Wenn du auf Spalte 220 erhöhst dan musst du "=215" schreiben.
Gruß Sepp
AW: Wer kann bestehendes Makro erweitern?
19.12.2004 15:45:06
Jens-Claus
Hallo Sepp,
besten Dank für die Erklärung durch dein Mail.
Jetzt stellt sich für mich jedoch eine zusätzliche Schwierigkeit:
Es sollen alle Zeilen gelöscht werden, welche in den Bereichen der Spalten 6 bis 21
und Spalten 30 bis 205 die genannten Kriterien erfüllen. Die Spalten 7 bis 20 sollen also nicht abgefragt werden.
Kannst du nochmals hirnen?
Dafür meinen besten Dank und schönen Sonntag
Jens
Anzeige
Nachfrage? o.T.
19.12.2004 16:49:59
Josef
Hallo Norbert!
Bitte um Aufklärung:
Es sollen alle Zeilen gelöscht werden, welche in den Bereichen der Spalten 6 bis 21
und Spalten 30 bis 205 die genannten Kriterien erfüllen. Die Spalten 7 bis 20 sollen also nicht abgefragt werden.

Meinst du nun die Spalten 6 bis 21 bzw. 30 bis 205 und die Spalten 22 bis 29 ausschliesen?
ich werde aus deiner Beschreibung nicht ganz schlau;-)
Gruß Sepp
AW: Wer kann bestehendes Makro erweitern?
19.12.2004 20:02:23
Jens-Claus
Hallo Sepp,
es ist genau wie du vermutet hast.
Abfrage über die Spalten 6 -21 und 30 - 205.
Die Spalten 22 - 29 sollen ausgeschlossen werden.
Ich habe irrtümlich meine Antwort als neuen Beitrag geschrieben.
Offensichtlich macht mir der Schnee zu schaffen.
Besten Dank und schöne Woche
wünscht Jens
Anzeige
AW: Wer kann bestehendes Makro erweitern?
19.12.2004 22:25:48
Josef
Hallo Jens!
Sollte es tun:

Sub ZeilenLöschen()
Dim i As Long
For i = [a65536].End(xlUp).Row To 1 Step -1
If WorksheetFunction.CountBlank(Range(Cells(i, 6), Cells(i, 21))) + _
WorksheetFunction.CountBlank(Range(Cells(i, 30), Cells(i, 205))) + _
WorksheetFunction.CountIf(Range(Cells(i, 6), Cells(i, 21)), 0) + _
WorksheetFunction.CountIf(Range(Cells(i, 30), Cells(i, 205)), 0) = 192 Then
Rows(i).Delete
End If
Next
End Sub

Gruß Sepp
AW: Wer kann bestehendes Makro erweitern?
21.12.2004 11:33:32
Jens-Claus
Hallo Sepp,
herzlichen Dank für die geniale Lösung.
Ich konnte diese erst heute testen. Das einzige Problem ist, daß ich ein Arbeitsblatt
mit über 50.000 Zeilen habe.
Der Ablauf des Makros dauert über 90 Minuten, aber da kann man wohl nichts machen.
Falls doch, wäre ich dankbar für Nachricht.
Nochmals meinen herzlichen Dank
für deine Superarbeit.
Schöne Weihnachten
wünscht Jens
Anzeige
AW: Wer kann bestehendes Makro erweitern?
21.12.2004 12:09:58
Josef
Hallo Jens!
50.000 Zeilen sind kein klacks;-)
Man könnte noch die Events, Bildschirmaktualisierung usw. ausschalten!
Vieleicht bringt's was.

Sub ZeilenLöschen()
Dim i As Long
With Application
.ScreenUpdating = False
.EnableEvents = False
.DisplayAlerts = False
.Calculation = xlCalculationManual
End With
For i = [a65536].End(xlUp).Row To 1 Step -1
If WorksheetFunction.CountBlank(Range(Cells(i, 6), Cells(i, 21))) + _
WorksheetFunction.CountBlank(Range(Cells(i, 30), Cells(i, 205))) + _
WorksheetFunction.CountIf(Range(Cells(i, 6), Cells(i, 21)), 0) + _
WorksheetFunction.CountIf(Range(Cells(i, 30), Cells(i, 205)), 0) = 192 Then
Rows(i).Delete
End If
Next
With Application
.ScreenUpdating = True
.EnableEvents = True
.DisplayAlerts = True
.Calculation = xlCalculationAutomatic
End With
End Sub

Gruß Sepp
Anzeige
AW: Wer kann bestehendes Makro erweitern?
21.12.2004 19:28:23
Jens-Claus
Hallo Sepp,
wiederum herzlichen Dank für die Ergänzung des Makros.
Ich werde dies Morgen testen.
Genieße die Feiertage
und alles Gute für dich
wünscht Jens

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige