online 1
gast (50)

/ Forum / Tabellenkalkulation

TabellenkalkulationTabellenkalkulation

Fragevon babe2504 vom 29.03.2019, 19:03 Options

leere Zeilen mit formeln löschen

hallo!
ich habe eine tabelle, die ich per verweise und wenn/dann-bezügen aus einem anderen tabellenblatt erstelle. nun erhalte ich dadurch auch viele leere zeilen, die natürlich die formeln, aber "" enthalten. ich habe mal hier im forum folgendes makro gefunden

Sub LeereZellenLöschen()
Dim Zeile As Long
Application.ScreenUpdating = False
Zeile = Range("S65536").End(xlUp).Row
Range("B3:B" & Zeile).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub

aber das funzt nicht, weil die zelle eben nicht leer ist, sondern eine formel enthält. kann mir jemand das makro so schreiben, dass die kompletten zeilen, wo die formel "" ergibt, löscht?

vielen dank
babe


Antwort schreiben

Antwort 1 von Hajo_Zi vom 29.03.2019, 20:06 Options

Hallo Unbekannter,

falls es um das Drucken geht, wäre dies ein Ansatz.

Link zur Datei

Gruß Hajo

Antwort 2 von babe2504 vom 29.03.2019, 20:51 Options

hallo hajo,
nein, es geht nicht um den druck. ich möchte von dem einen blatt (komplette zusammenfassung) nur bestimmte daten haben. diese hole ich mir mit wenn/dann. und eine bedingung ergibt halt, den zellinhalt "". wenn das so ist, will ich nicht nur diese leere zelle löschen, sondern die ganze zeile, damit die beschriebenen zeilen alle untereinander stehen und so aus 400 zeilen eben nur ca. 100 zeilen werden.

gruß
babe

Antwort 3 von nighty vom 29.03.2019, 21:23 Options

hi babe :-)

wie gewünscht :-)

gruss nighty

Option Explicit
Sub such()
Dim suche1 As Range
Dim zaehler1, lager As Long
Do
zaehler1 = zaehler1 + 1
Set suche1 = ActiveSheet.Range("B" & zaehler1 & ":B" & ActiveSheet.Range("B" & Rows.Count).End(xlUp).Row).Find("", LookIn:=xlValues)
If Not suche1 Is Nothing Then
lager = suche1.Row
ActiveSheet.Cells(suche1.Row, suche1.Column).EntireRow.Delete
zaehler1 = lager
Else
zaehler1 = ActiveSheet.Range("B" & Rows.Count).End(xlUp).Row
End If
Loop Until zaehler1 = ActiveSheet.Range("B" & Rows.Count).End(xlUp).Row
End Sub

Antwort 4 von nighty vom 29.03.2019, 21:31 Options

hi babe :-)

ups korrigiert :-))

gruss nighty

Option Explicit
Sub such()
Dim suche1 As Range
Dim zaehler1, lager As Long
zaehler1 = 1
Do
Set suche1 = ActiveSheet.Range("B" & zaehler1 & ":B" & ActiveSheet.Range("B" & Rows.Count).End(xlUp).Row).Find("", LookIn:=xlValues)
If Not suche1 Is Nothing Then
lager = suche1.Row
ActiveSheet.Cells(suche1.Row, 2).EntireRow.Delete
zaehler1 = lager - 1
Else
zaehler1 = ActiveSheet.Range("B" & Rows.Count).End(xlUp).Row
End If
Loop Until zaehler1 = ActiveSheet.Range("B" & Rows.Count).End(xlUp).Row
End Sub

Antwort 5 von babe2504 vom 29.03.2019, 22:05 Options

hallo nighty,
du schon wieder, wie schön... und prompt läuft meine tabelle ;-) vielen dank!!
gibt es eigentlich excel-kurse, die es direkt auf makro und vba abgesehen haben? hab, was das betrifft, echt gar keine ahnung. böhmische wälder. oder lernt man das nach und nach?

lg
babe

Antwort 6 von babe2504 vom 29.03.2019, 22:52 Options

hallo nighty,
ich hatte wohl den totalen denkfehler in meiner arbeitsmappe. dein makro tut das, was es soll. aber:
meine arbeitsmappe enthält 3 blätter. blatt eins enthält im mom ca. 400 daten zu fahrzeugen mit div. informationen u.a. auch einem abmeldedatum. dieses blatt "lebt" durch ständiges aktualisieren (hier mal eine abmeldung zu einem bestehenden auto. oder am schluß der tabelle wird noch ein auto dazugetragen). aus dieser gesamtliste entstehen zwei weitere blätter. einmal sollen alle bereits abgemeldeten kennzeichen ein blatt füllen (man erkennt diese auswahl durch den datumseintrag unter abmeldedatum. das dritte blatt solte dann aus allen noch angemeldeten kennzeichen bestehen (erkennt man also daran, dass kein abmeldedatum eingetragen wurde). gelöst habe ich es folgendermaßen:

=WENN(Fahrzeugliste!P3>0;Fahrzeugliste!B3;"")

wobei in spalte P eben das abmeldedatum steht. damit hole ich mir das kennzeichen. rechts davon sollen die gleichen daten stehen, die zum kennzeichen passen. das habe ich mit folgender formel erreicht:

=WENN($B2="";"";VERWEIS($B2;Fahrzeugliste!$B:$B;Fahrzeugliste!C:C))

das kopiere ich also ca. für 400 zeilen. dabei entstehen halt unheimlich viele leerzeilen, die ich mit deinem makro lösche. das funktioniert auch.
dann kommt aber mein denkfehler. jetzt trage ich in der gesamtliste zu einem bestehenden kennzeichen ein abmeldedatum ein. nun sollte ja automatisch in dem zweiten arbeitsblatt (alle abgemeldeten autos) dieses kennzeichen auch wieder erscheinen. tut es aber nicht, weil ja die formel dafür mit dem makro gelöscht wurde. wäre ja auch nicht so schlimm, ich könnte die formeln ja nach ausführen des makros wieder kopieren. aber dann kriege ich alle abgemeldeten kennzeichen doppelt.

kannst du mir trotzdem helfen?

babe

Antwort 7 von nighty vom 30.03.2019, 10:18 Options

hi babe :-)

ich bin nur ein schüler hajo ist der lehrer :-))

anfangen kannst du ganz einfach mit altbackenen schulbasic,dann in foren ueber suchfunktionen gezielte info holen und dann viel experimentieren,dann kommt alles von selbst mit der zeit :-)))

gruss nighty

meinst du es so ?

tabelle1 wird zeile gelöscht

tabelle2 wird am ende die zuvor gelöschte rangehangen

Sub such()
Dim suche1 As Range
Dim zaehler1, lager As Long
zaehler1 = 1
Do
Set suche1 = Sheets(1).Range("B" & zaehler1 & ":B" & Sheets(1).Range("B" & Rows.Count).End(xlUp).Row).Find("", LookIn:=xlValues)
If Not suche1 Is Nothing Then
lager = suche1.Row
Sheets(1).Rows(suche1.Row).Copy
Sheets(2).Rows(Sheets(2).UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1).Insert Shift:=xlDown
Sheets(1).Cells(suche1.Row, 2).EntireRow.Delete
zaehler1 = lager - 1
Else
zaehler1 = Sheets(1).Range("B" & Rows.Count).End(xlUp).Row
End If
Loop Until zaehler1 = Sheets(1).Range("B" & Rows.Count).End(xlUp).Row
End Sub

sollten die werte allerdings von formeln stammen dann muss ich es umschreiben,mit info von dir welche spalten kopiert werden sollen,von - bis

Antwort 8 von babe2504 vom 30.03.2019, 11:19 Options

moin nighty!
hab schon ziemlich ungeduldig auf dich gewartet ;-)
hmm, nee. also im ersten tabellblatt (=Fahrzeugliste) wird nichts gelöscht. Hier kommen sämtliche Eintragungen rein. Hier wird beispielsweise nur ein Kennzeichen mit entsprechenden weiteren Daten (Gewicht, Hersteller, Fahrgestellnrn. usw) dazugetragen. Oder aber beispielsweise: Das Fahrzeug in Zeile 9 wird nun abgemeldet. Unter Spalte P kommt hier also ein Abmeldedatum rein. Dies ist die Bedingung für das zweite Arbeitsblatt (=abgemeldet). Wenn also ein Abmeldedatum vorhanden ist, soll das in dieses zweite Blatt automatisch eingetragen werden. Hast du ne Mail-Adresse? Darfst du mir die geben? Dann würde ich dir die Tabelle einfach mal schicken?!

Gruß
Babe

Antwort 9 von nighty vom 30.03.2019, 11:40 Options

hi babe :-)

oberley@t-online.de

komm aber erst richtung sonntag/montag dazu

gruss nighty

Antwort 10 von babe2504 vom 09.04.2019, 18:29 Options

hallo nighty,
bin nun aus dem urlaub zurück und hab gleich in mein postfach geguckt. leider hab ich nichts von dir gefunden :-( bist du nicht dazu gekommen, oder kannst du mir nicht weiterhelfen?

lg
babe

Ähnliche Themen

mehrere Zeilen in Excel einfügen
Arnsen1  07.08.2007 - 120 Hits - 1 Antwort

Excel Zeilen löschen
Smart79  07.09.2007 - 291 Hits -

zeilen löschen
SARP  19.12.2007 - 148 Hits - 1 Antwort

zeile einfuegen-Formel
grimmige  11.05.2008 - 34 Hits - 1 Antwort

Zeilen mit leeren Zellen löschen
brs  16.06.2008 - 301 Hits - 7 Antworten

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Mon Jan 26 07:32:25 2026