Seite 1 von 1

Leerzeilen löschen

Verfasst: So 21. Jul 2024, 10:23
von Trudchen
Moin, moin liebe Leute,
ich brauche eure Hilfe. Ich breche mein Problem mal auf das absolut Notwendige herunter: Ich habe eine Spalte (A, bzw. 0) und in dieser Spalte 8 Einträge. Der letzte Spalteneintrag befindet sich in Zeile 10 – also befinden sich einige Leerzeilen in der Spalte. Und diese möchte ich mit einem Befehl oder Algorithmus löschen. In meinem konkreten Problem habe ich über 14.000 Zeilen, in denen sich eine unbekannte Anzahl von Leerzeilen befindet – aber das nur nebenbei. Nach stundenlanger Recherche bin ich immer nur darauf gestoßen, wie man in Calc diese leeren Zeilen löschen kann, sodass man einen lückenlosen Bereich erhält. Aber in LibreOffice Basic? Fehlanzeige! Der Code von VBA funtzt nicht, auch nicht mit >Option VBASupport 1<. Für jede Hilfe oder jeden Hinweis bedanke ich mich schon mal im voraus. Danke, danke, danke!

Re: Leerzeilen löschen

Verfasst: So 21. Jul 2024, 11:08
von karolus
Hallo
Die »nix mit Makro« -methode:

⇒ Daten ⇒ Weitere Filter ⇒ Standardfilter :
»Spalte A« »=« »nicht leer«

⇒⇒ Optionen:
[x]Ausgabe nach <wohin immer du möchtest>


ps. vor gut Fünf Wochen hattest du ja schon mal im Prinzip die gleiche Frage… sind die Erkenntnisse daraus im Sommerloch verschwunden?

Re: Leerzeilen löschen

Verfasst: So 21. Jul 2024, 12:49
von mikele
Hallo,
ich habe mich mal wieder in Python versucht:

Code: Alles auswählen

def leerzeilen_entfernen():
    doc = XSCRIPTCONTEXT.getDocument()
    tab= doc.Sheets[0]
    leer = tab.Columns.A.queryEmptyCells()[::-1][1:]
    for leerzeilen in leer:
        otab.Rows.removeByIndex(leerzeilen.Rows[0].RangeAddress.StartRow, leerzeilen.Rows.Count)
Ergänzumg/Korrektur:
Anstelle von

Code: Alles auswählen

    oleer = otab.Columns.A.queryEmptyCells()[::-1][1:]
besser

Code: Alles auswählen

    oleer = otab.Columns.A.queryEmptyCells()[-2::-1]

Re: Leerzeilen löschen

Verfasst: So 21. Jul 2024, 13:15
von karolus
Hallo Mikele
ohne »o« ;) und von oben nach unten direkt auf den »Rows« der »leerzeilen«:

Code: Alles auswählen

def leerzeilen_entfernen():
    doc = XSCRIPTCONTEXT.getDocument()
    tab= doc.Sheets[0]
    leer = tab.Columns.A.queryEmptyCells()[:-1]
    for leerzeilen in leer:
        leerzeilen.Rows.removeByIndex(0, leerzeilen.Rows.Count)

Re: Leerzeilen löschen

Verfasst: So 21. Jul 2024, 13:24
von mikele
Hallo karolus,
na klar - removeByIndex() auf die leerzeilen(bereiche) anwenden und nicht auf die ganze Tabelle ... :oops: