Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1632to1636
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

VBA Zeile löschen wenn bestimmte Zelle ""

VBA Zeile löschen wenn bestimmte Zelle ""
18.07.2018 09:06:56
Dennis
Hallo ich habe ein problem bei einem Makro program.
Ich habe eine Tabelle mit vielen Datensätzen (10000x10)
Nun möchte ich alle leeren (bzw "") zeilen löschen. Dazu habe ich mich viel im Forum belesen und einiges konnte ich auch anwenden jedoch nicht in effizienter Zeit.
Dann habe ich folgenden Code gefunden welcher für große Datensätze sein soll:

Sub Makro3()
Columns(1).Insert
With Range("A1:A" & Cells(Rows.Count, 2).End(xlUp).Row)
.Formula = "=IF(RC[1]="""",true,Row())"
.Formula = .Value
.CurrentRegion.Sort key1:=Cells(1, 1), Order1:=xlAscending, header:=xlNo
.SpecialCells(xlCellTypeConstants, 4).EntireRow.Delete
End With
Columns(1).Delete
End Sub

Diesen versteh ich jedoch nicht ganz und kann ihn daher nicht anpassen.
Meine Tabelle starten von B5 bis N10000. Demnach müsste ich sie anpassen.
Die zelle nach der Kontrolliert werden soll ist spalte "K"
Gibt es eine möglichkeit diesen anzupassen oder einen anderen für große Datensätze oder muss ich meine ganze Tabelle umstrukturieren ?
Vielen Dank im Vorraus
MfG
Dennis

22
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Zeile löschen wenn bestimmte Zelle ""
18.07.2018 09:08:51
Hajo_Zi
Hallo Dennis,
benutze Autofilter und kopiere den sichtbaren Bereich.

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
AW: VBA Zeile löschen wenn bestimmte Zelle ""
18.07.2018 09:26:22
Bernd
Servus Dennis,
mach mal eine Sicherheitskopie des Blattes und teste darauf mal diesen Code

Sub test()
For i = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row To 5 Step -1
If ActiveSheet.Cells(i, 11).Value = "" Then ActiveSheet.Rows(i).EntireRow.Delete
Next i
End Sub
Grüße, Bernd
AW: VBA Zeile löschen wenn bestimmte Zelle ""
18.07.2018 11:27:44
Dennis
hallo Bernd,
danke für die schnelle Antwort,
jedoch hatte ich ein Code wie diesen bereits getestet.
Es dauerdt bis zu 5min zum executen, was daher für das Makro ungeeigenet ist das es 10000x10 Daten sind.
Grüße, Dennis
Anzeige
AW: VBA Zeile löschen wenn bestimmte Zelle ""
18.07.2018 17:58:57
Bernd
Servus Dennis,
mal saublöd gefragt, sind in allen Zeilen diese Formeln drin?
Dann würde ich zur Beschleunigung mal vorschlagen erst die Berechnung des Blattes auszuschalten, dann löschen, dann wieder einschalten. Sollte deutliche Schnelligkeitsvorteile bringen bei ~ 10.000 Formeln, die sich bei automatischer Zellenberechnung nach jeder gelöschten Zeile neu berechnen...

Sub test()
Application.Calculation = xlCalculationManual
For i = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row To 5 Step -1
If ActiveSheet.Cells(i, 11).Value = "" Then ActiveSheet.Rows(i).EntireRow.Delete
Next i
Application.Calculation = xlCalculationAutomatic
End Sub
Grüße, Bernd
Anzeige
AW: VBA Zeile löschen wenn bestimmte Zelle ""
19.07.2018 08:31:30
Dennis
Danke für den Tipp.
Jedoch habe ich im Code bereits diese initial settings drin:
screenUpdateState = Application.ScreenUpdating
statusBarState = Application.DisplayStatusBar
calcState = Application.Calculation
eventsState = Application.EnableEvents
displayPageBreakState = ActiveSheet.DisplayPageBreaks
Application.ScreenUpdating = False
Application.DisplayStatusBar = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
ActiveSheet.DisplayPageBreaks = False

Dauerdt dennoch noch zu lange.
AW: VBA Zeile löschen wenn bestimmte Zelle ""
18.07.2018 09:51:17
Daniel
Hi
So für deine Datei
Sub Makro3()
Columns(1).Insert
With Range("A5:A" & Cells(Rows.Count, 3).End(xlUp).Row)
.Formula = "=IF(RC12="""",true,Row())"
.Formula = .Value
.EntireRow.Sort key1:=Cells(1, 1), Order1:=xlAscending, header:=xlNo
.SpecialCells(xlCellTypeConstants, 4).EntireRow.Delete
End With
Columns(1).Delete
End Sub
Gruß Daniel
Anzeige
AW: VBA Zeile löschen wenn bestimmte Zelle ""
18.07.2018 11:34:58
Dennis
Hallo Daniel,
ich habe den Code ausprobiert. Jedoch funktioniert dieser nicht.
Auch bei einigen händischen Ändererungen meinerseits.
Ich glaube es liegt daran das der code immernoch nicht auf meine TabellenSituation abgestimmt ist.
Da meine Tabelle erst bei Zeile B5 startet funktioniert es nicht wirklich.
Ich würde jedoch ungern diesen ändern wollen.
Beste Grüße Dennis
AW: VBA Zeile löschen wenn bestimmte Zelle ""
18.07.2018 11:55:50
Daniel
Hi
"Funktioniert nicht" ist als Fehlerbeschreibung nicht besonders hilfreich, wenn es darum geht herauszufinden, warum es nicht funktioniert.
Hilfreich wäre auch eine kleine Beispieldatei (ein paar Zeilen reichen)
Ansonsten, bist du den Code mal im Einzelstepmodus durchgegangen und hast kontrolliert, was nach jedem Programmschrift in Excel passiert?
Dann lernst du auch den Code besser verstehen.
Gruß Daniel
Anzeige
AW: VBA Zeile löschen wenn bestimmte Zelle ""
18.07.2018 13:35:05
Dennis
Hallo Daniel
Entschuldigen sie die unsachliche Antwort.
Wenn ich diese Makro ausführe löscht sich die gesamte Tabelle ab der Zeile 5.
Da ich nun nach einer Leeren zelle ("") in Spalte "G" filter hab ich den code so angepasst.
With Sheets("versteckte Tabelle")
Columns(1).Insert
With Range("A5:A" & Cells(Rows.Count, 3).End(xlUp).Row)
.Formula = "=IF(RC7="""",true,Row())"
.Formula = .Value
.EntireRow.Sort key1:=Cells(1, 1), Order1:=xlAscending, Header:=xlNo
.SpecialCells(xlCellTypeConstants, 4).EntireRow.Delete
End With
Columns(1).Delete
End With
Die excel Tabelle sieht wie folgt aus: (leider kann ich aktuell kein File updloaden. Ich hoffe sie können es trotzdem deuten.
" - sind leere Zellen
X - Überschrift
1 - alle zahlen sind werte
_ A B C D E F G H I
1 " " " " " " " " "
2 " " " " " " " " "
3 " " " " " " " " "
4 " X X X X X X X
5 " 1 2 3 4 5 6 7
6 " 4 3 5 2 6 7 2
7 " " " " " " " "
8 " 3 5 3 6 7 5 3
9 " 4 5 6 7 3 2 2
10" 5 3 3 3 3 2 2
11" " " " " " " "
12" 4 5 6 3 2 3 4
Mit freundlichen Grüßen
Dennis Mattutat
Anzeige
AW: VBA Zeile löschen wenn bestimmte Zelle ""
18.07.2018 13:52:35
Daniel
Hi
schwer zu sagen, ohne die Datei zu kennen.
hast du berücksichtigt, dass der Code eine Hilfsspalte am Anfang einfügt und diese am Schluß wieder löscht?
dh für die formel verschieben sich die Zellbezüge um eine Spalte nach rechts.
du setzt noch mal eine WITH-Klammer für das Tabellenblatt.
die musst du natürlich auch nochmal im Code berücksichtigen:
With Sheets("versteckte Tabelle")
.Columns(1).Insert
With .Range("A5:A" & .Cells(.Rows.Count, 3).End(xlUp).Row)
.Formula = "=IF(RC7="""",true,Row())"
.Formula = .Value
.EntireRow.Sort key1:=Cells(1, 1), Order1:=xlAscending, Header:=xlNo
.SpecialCells(xlCellTypeConstants, 4).EntireRow.Delete
End With
.Columns(1).Delete
End With
Zellbezüge ohne Punkt davor beziehen sich auf das aktive Tabellenblatt, Zellbezüge mit Punkt davor auf das Tabellenblatt, welches bei WITH deklariert ist.
Gruß Daniel
Anzeige
AW: VBA Zeile löschen wenn bestimmte Zelle ""
18.07.2018 14:22:29
Dennis
Ich habe das Programm ausgeführt und einige Sachen auskommentiert um zu schauen was passiert.
Der Fehler im Program ist in der "IF" condition.
Ich bekomme in der eingefügten Spalte überall ein WAHR.
In einer Zelle in der Tabelle ist folgende Formel exemplarisch enthalten:
=WENN('Tabelle1'!J10="";"";WENN('Tabelle1'!K10= 0; "";WENN('Tabelle1'!K10 ="Sum:";"";'Tabelle1'!K10)))
Diese zeigt an sich den richtigen Wert an.
Jedoch wird von der Funktion jeder inhalt als "WAHR" empfunden.
Können Sie sich das erklären?
MfG
Dennis
AW: VBA Zeile löschen wenn bestimmte Zelle ""
18.07.2018 15:25:15
Daniel
Hi
lade bitte die Beispieldatei hoch.
sonst kann ich dazu nichts sagen.
deine Beschreibungen sind immer noch nicht ausreichend.
Beispiel:
"In einer Zelle in der Tabelle ist folgende Formel exemplarisch enthalten"
"in einer Zelle" - In welcher? Excel hat mehr Zellen, als es zählen kann ;-)
du solltest schon dazu schreiben, in welcher Zelle diese Formel steht.
ist das auch die Zelle, die die vom Makro überprüft wird?
das alles kann ich mit deinen Angaben nicht beurteilen.
Entweder du beschreibst alles möglichst genau, oder du lädst die Datei hoch.
Gruß Daniel
Anzeige
AW: VBA Zeile löschen wenn bestimmte Zelle ""
19.07.2018 09:20:08
Dennis
Hallo Daniel.
Ich lade nun eine Beispiel Tabelle hoch die dem Aufbau meiner entspricht mit Fakedaten.
https://www.herber.de/bbs/user/122778.xlsx
Dazu zu sagen gibt es noch das jeder dieser Zellen unterhalb der überschrifften in Zeile 4 aus einer anderen Tabelle eingefügt ist.
Dazu hab ich die Formel: (aus einer Zelle in Reihe 10)
=WENN('Tabelle1'!J10="";"";WENN('Tabelle1'!K10= 0; "";WENN('Tabelle1'!K10 ="Sum:";"";'Tabelle1'!K10)) )
genommen.
Diese filtert dann die andere Tabelle raus und schreibt dann wenn die Bedingungen nicht erfüllt sind "" in die ganze Zeile. Pro Spalte unterscheiden sich die Zellen in der Formeln nur vom Spaltenindex der andere Tabelle (Tabelle1)
Ich hoffe diese Informationen sind ausreichend für eine weitere Hilfe. Zusätzlich zu der anderen Information die ich Ihnen gegeben habe. (eingefügte Spalte A -> überall nur WAHR ohne Formel)
Mit freundlichen Grüßen
Dennis Mattutat
Anzeige
AW: VBA Zeile löschen wenn bestimmte Zelle ""
18.07.2018 11:44:47
Dennis
Hallo Hajo,
Ich bekomme dort ebenfalls nur Fehlermeldungen raus oder es dauerdt extrem lange.
Mir ist es vorallem wichtig das es schnell geht und ohne "Select" oder ähnlichem.
Beste Grüße
Dennis
AW: VBA Zeile löschen wenn bestimmte Zelle ""
18.07.2018 15:04:24
Torsten
Hallo,
nochmal eine Frage dazu. In welcher Spalte kann denn geprueft werden, dass die Zeile als leer gilt und damit geloescht werden kann?
AW: VBA Zeile löschen wenn bestimmte Zelle ""
18.07.2018 15:14:28
Torsten
Kann dir das hier anbieten. Kann aber nicht sagen, wie es bei deiner Dateigroesse mit der Geschwindigkeit aussieht. Hab jetzt gesehen, dass du in Spalte G suchst. Den Tabellennamen musst du noch anpassen.
Sub Delete()
Application.ScreenUpdating = False
Dim Row As Long
Dim RowMax As Long
With Sheets("Tabelle1")
RowMax = .UsedRange.Rows.Count
For Row = RowMax To 5 Step -1
If .Cells(Row, 7).Value = "" Then
.Rows(Row).Delete
End If
Next Row
End With
Application.ScreenUpdating = True
End Sub
Der Code startet bei der letzten benutzten Zeile und geht bis Zeile 5.
Gruss Torsten
Anzeige
AW: VBA Zeile löschen wenn bestimmte Zelle ""
18.07.2018 15:17:43
Dennis
Hallo Thorsten.
Diese Art von Code habe ich bereits probiert.
Dieser dauerdt bei meiner Datengröße leider zu lange. Aber danke trotzdem.
Ich bin mit einem anderen Kollegen bereits im Gespräch welcher basierend auf meiner Vorlage mir probiert zu helfen diesen zu Debuggen um eine schnelle option zu generieren
Mit freundlichen Grüßen
Dennis
AW: VBA Zeile löschen wenn bestimmte Zelle ""
18.07.2018 15:18:07
Torsten
Ok. Wenn in Spalte K gesucht wird, dann hier aendern:
If .Cells(Row, 7).Value = "" Then

auf
If .Cells(Row, 11).Value = "" Then

AW: VBA Zeile löschen wenn bestimmte Zelle ""
18.07.2018 15:14:36
Dennis
Geprüft werden soll in Spalte "K"
Habe die Code soweit angepasst bereits.
 With Sheets("versteckte Tabelle")
.Columns(1).Insert
With Range("A5:A" & Cells(Rows.Count, 3).End(xlUp).Row)
.Formula = "=IF(RC8="""",true,Row())"
.Formula = .Value
.EntireRow.Sort key1:=Cells(1, 1), Order1:=xlAscending, Header:=xlNo
.SpecialCells(xlCellTypeConstants, 4).EntireRow.Delete
End With
.Columns(1).Delete
End With
Jedoch gibt es überall "WAHR" zurück und löscht dann alle zeilen
Grüße
Dennis
AW: VBA Zeile löschen wenn bestimmte Zelle ""
18.07.2018 15:29:02
Daniel
Hi
Spalte K ist die Spaltennummer 11, also RC11 in der Formel
da steht aber noch RC8, was Spalte H ist.
setz mal nen Haltepunkt auf die Zeile .Formula = .Value und schau dir die Formel an, die in Spalte A steht. Diese Wurde vom Makro eingefügt, um die zu löschenden zeilen zu kennzeichnen.
Gruß Daniel
AW: VBA Zeile löschen wenn bestimmte Zelle ""
19.07.2018 08:35:08
Dennis
Hallo Daniel,
Ich habe die Spalte auf H geändert. Das wurde bewusst getan.
Die Spalte A enthält nur den Wert "WAHR" und es steht keine Formel drin. Wenn ich dort die Formel anhalte
Beste Grüße
Dennis
AW: VBA Zeile löschen wenn bestimmte Zelle ""
19.07.2018 08:35:09
Dennis
Hallo Daniel,
Ich habe die Spalte auf H geändert. Das wurde bewusst getan.
Die Spalte A enthält nur den Wert "WAHR" und es steht keine Formel drin. Wenn ich dort die Formel anhalte
Beste Grüße
Dennis

216 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige