Frage von honeyainring, 68

WENN-DANN-SONST leere Zeile entfernen?

Wenn der Wert in Tabelle 1 der Spalte D ja ist, dann soll er den Wert von Tabelle 1 Spalte B übertagen sonst soll es leer bleiben.

=WENN(Tabelle 1!D:D="ja";Tabelle1!B:B;"")

Jetzt habe ich dass Problem, dass ich leere Zeilen in meiner Tabelle habe, wie kann ich diese entfernen bzw. was muss ich bei der Formel unter SONST eintragen?

Expertenantwort
von Suboptimierer, Community-Experte für Excel, 43

Ich habe mal eine Funktion zum Löschen leerer Zeilen aus einem Bereich geschrieben. Geht sicherlich auch eleganter, aber hier ist meine Lösung:

Public Function LOESCHELEERZEILEN(Bereich As Range) As Variant
Dim i, j As Integer
Dim iZeilen As Integer Dim resMatrix() As Variant Dim baZeileEmpty() As Boolean ReDim Preserve baZeileEmpty(1 To Bereich.Rows.Count) ' Leere Zeilen bestimmen iZeilen = 0 For i = 1 To Bereich.Rows.Count baZeileEmpty(i) = True For j = 1 To Bereich.Columns.Count If Not IsEmpty(Bereich.Cells(i, j).Value) Then baZeileEmpty(i) = False iZeilen = iZeilen + 1 Exit For End If Next Next ' Alle nichtleeren Zeilen kopieren If iZeilen > 0 Then ReDim resMatrix(1 To iZeilen, 1 To Bereich.Columns.Count) iZeilen = 1 For i = 1 To Bereich.Rows.Count If Not baZeileEmpty(i) Then For j = 1 To Bereich.Columns.Count If Not IsEmpty(Bereich.Cells(i, j).Value) Then resMatrix(iZeilen, j) = Bereich.Cells(i, j).Value Else resMatrix(iZeilen, j) = "" End If Next iZeilen = iZeilen + 1 End If Next End If LOESCHELEERZEILEN = resMatrix End Function
Kommentar von honeyainring ,

Entweder bin ich zu blöd dafür - oder es funktioniert einfach nicht...
Ich geh unter Entwicklermodus - VisualBasics - dann in das Tabellenblatt rein und füge hier den Code ein...

Kommentar von Suboptimierer ,

Nee, du musst ein Modul einfügen.

Dann steht dir die Funktion ganz normal im Excelsheet zur Verfügung. Sie gibt dir eine Matrix zurück, in der die Leerzeilen des übergebenen Bereichs gelöscht sind.

Bei dir wäre das also (ungetestet) 

=WENN(Tabelle1!D:D="ja";LOESCHELEERZEILEN(Tabelle1!B:B);"")

oder mal probieren:

=LOESCHELEERZEILEN(WENN(Tabelle1!D:D="ja";Tabelle1!B:B;""))
Antwort
von Shinjischneider, 68

Wenn eine Zeile komplett entfernt werden soll, kommst Du nicht an einem Macro vorbei. Normale Excel-Formeln können nicht so stark eingreifen, als dass sie ganze Zellen/Zeilen/Spalten löschen würden.

Kommentar von honeyainring ,

Wie schwierig ist das mit dem Makro? Kriegt man das als nicht Excel-Genie auch hin oder muss man dazu recht viel drauf haben...

Kommentar von Ninombre ,

Auf welches Feld soll denn geprüft werden? Eines nur oder mehrere in der Zeile?

In diesem Beispiel wird in Spalte A geprüft, ob die jeweilige Zelle leer ist, wenn ja wird die Zeile gelöscht.

Sub zeilenweg()
For i = 1 To ActiveSheet.UsedRange.Rows.Count
If Cells(i, 1).Value = "" Then Rows(i).Delete
Next
End Sub

Vor dem Ausprobieren aber Datei sichern, die so gelöschten Zeilen lassen sich wieder rückgängig machen.

Zum Einfügen Ribbon Entwicklertools > Visual Basic. Die Datei muss dann aber als xlsm gespeichert werden, sonst fliegt der Code wieder raus bzw. wird nicht gespeichert.

Kommentar von honeyainring ,

Wenn die Spalte A leer ist soll die Zeile gelöscht werden.

Leider funktioniert der o. a. Code nicht.

Antwort
von Jackie251, 48

Ich verstehe das Problem noch nicht ganz.

Wo sind denn leere Zeilen?
In Tabelle 1?, dann sollten diese leerzeilen ja auch in der tabelle 2 auftreten, sonst passen die Daten ja nicht mehr zueinander, bzw nicht mehr automatisch.
Oder entstehen die leeren Zeilen in Tabelle 2?
Aber warum sind dort ganze Zeilen leer, die Formel sorgt doch lediglich für leere ZELLEN.
Oder soll die Aufgabenstellung wie folgt sein:

Die neue Tabelle hat nur eine Spalte und in dieser stehen untereinander die Werte aus Spalte B bei denen D  = ja gilt?

Kommentar von honeyainring ,

In Tabelle 1 sind mehrere Angaben u.a. eine Frage, die mit JA und NEIN beantwortet wird. Es  soll einige Zellen übertragen, wenn der Wert JA ist - ist der Wert aber NEIN - so bleibt in Tabelle 2 die ganze Zeile leer, da ja nur die JA-Werte übertragen werden sollen

Keine passende Antwort gefunden?

Fragen Sie die Community