Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

leere Zeilen mit formeln löschen





Frage

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 1 von Hajo_Zi

Hallo Unbekannter,

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

Link zur Datei

Gruß Hajo

Antwort 2 von babe2504

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

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

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

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

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

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

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

hi babe :-)

oberley@t-online.de

komm aber erst richtung sonntag/montag dazu

gruss nighty

Antwort 10 von babe2504

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

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: