Leerzellen löschen! Nicht Zeilen! Spezielleres Problem!

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

1a-zuhause
Beiträge: 3
Registriert: Mo, 11.01.2021 14:02

Leerzellen löschen! Nicht Zeilen! Spezielleres Problem!

Beitrag von 1a-zuhause »

Servus Community,

vielleicht seit ihr ja bisschen schlauer als ich :D ... Ich knobel seit Wochen an einem Problem, finde den Fehler aber nicht und kann es auch nicht lösen ...

Worum geht es?
Ich baue gerade an einem Konzept zur Verbesserung der Datenverarbeitung im E-Business Bereich.

Grundproblem:
Legende: # = Zelle hat Wert / +=Leerzelle
Ist-Zustand:
Zeilen der Form
A1 B2 C1 D1 E1 F1 G1 H1 I1 ...
# # # + # + + + #
# + + + # + # # +
.
.
.
Sollzustand:
A1 B2 C1 D1 E1 F1 G1 H1 I1 ...
# # # # # + + + +
# # # # + + + + +
.
.
.

Die Zellwerte sind immer unterschiedlich!
Soooo, wenn das erledigt ist müssen noch die Zeilen in Spalten umgewandelt werden. Sodass alle Werte einer Zeile untereinander in einer Spalte stehen, ohne Leerzellen dazwischen.

Die Werte der Zeilen sind auf c.a. 30 Zellen verteilt und immer unterschiedlich.

Viel Spaß beim Knobeln! Ich hoffe ihr schafft das!

Im aktuellen Fall geht es um Bilder... Die Bilder sind in Zeilen per Link abgespeichert. Ich brauch aber die Bilder, die per URL in den Zeilen gespeichert sind (mit ab und zu Leerzellen dazwischen) in Spalten sortiert und ohne Leerzeilen dazwischen.
mikeleb
*******
Beiträge: 1316
Registriert: Fr, 09.12.2011 16:50

Re: Leerzellen löschen! Nicht Zeilen! Spezielleres Problem!

Beitrag von mikeleb »

Hallo,
1) den Bereich markieren -> ausschneiden
2) in Zelle A1: ->Bearbeiten->Einfügen als... mit der Option "Transponieren"
3) jede Spalte (einzeln) sortieren
Gruß,
mikeleb
1a-zuhause
Beiträge: 3
Registriert: Mo, 11.01.2021 14:02

Re: Leerzellen löschen! Nicht Zeilen! Spezielleres Problem!

Beitrag von 1a-zuhause »

Servus, danke für die schnelle Antwort...

Das Transponieren kenn ich schon. Mir gehts eher darum die einzelnen Zellen raus zu bekommen ...

Das hab ich noch nicht hinbekommen...
echo
*******
Beiträge: 1005
Registriert: Fr, 14.11.2008 15:27
Wohnort: BRA - Nds

Re: Leerzellen löschen! Nicht Zeilen! Spezielleres Problem!

Beitrag von echo »

Hallo
wenn ich das richtig lese, möchtest du Zeile für Zeile horizontal sortieren.
Das geht wenn du im Menü >Daten<>Sortieren< unter Optionen die Ausrichtung der Sortierung änderst.

Das müsstest du dann Zeile für zeile einzeln "anstoßen"

Gruß Holger
1a-zuhause
Beiträge: 3
Registriert: Mo, 11.01.2021 14:02

Re: Leerzellen löschen! Nicht Zeilen! Spezielleres Problem!

Beitrag von 1a-zuhause »

Hallo Holger,

darauf bin ich erst garnicht gekommen! Vielen Dank!

Jetzt habe ich die Zeilen sortiert...

Aber das Problem was jetzt auftritt ist, dass ich die Werte zwar jetzt dank dir zum Anstoßen bringen kann.
Die Werte in den Zellen dürfen aber von der Anordnung nicht verändert werden.

Ist verständlich was ich meine ?

LG und vielen Dank
Alex
echo
*******
Beiträge: 1005
Registriert: Fr, 14.11.2008 15:27
Wohnort: BRA - Nds

Re: Leerzellen löschen! Nicht Zeilen! Spezielleres Problem!

Beitrag von echo »

Die Werte in den Zellen dürfen aber von der Anordnung nicht verändert werden.
Ist verständlich was ich meine ?
Hallo Alex
eigentlich nicht....
Wenn die Spalten zueinander "gehören" dann stimmt dein gewünschter "Sollzustand" nicht.

Entweder du sortierst Zeile für Zeile dann sind alle Zeilen (aufsteigend) sortiert (Siehe gewünschter Sollzustand)
oder
du markierst erst beide Zeilen und entscheidest dann welche Zeile die Sortierung vorgeben soll.
Dann bleibt die Spaltenweise Zuordnung bestehen aber dein Sollzustand kann nicht erreicht werden,
jeanie.gif
jeanie.gif (1.41 KiB) 2009 mal betrachtet
oder ich habe es nicht verstanden was du möchtest :)
Gruß Holger
echo
*******
Beiträge: 1005
Registriert: Fr, 14.11.2008 15:27
Wohnort: BRA - Nds

Re: Leerzellen löschen! Nicht Zeilen! Spezielleres Problem!

Beitrag von echo »

Die Zellwerte sind immer unterschiedlich!
Soooo, wenn das erledigt ist müssen noch die Zeilen in Spalten umgewandelt werden. Sodass alle Werte einer Zeile untereinander in einer Spalte stehen, ohne Leerzellen dazwischen.
Nachtrag:
Ist die Liste nach einer Zeile sortiert, dann gibt es dort keine Leerzellen mehr.
Das "drehen" der Liste lässt sich einfach erledigen:
Markiere die Liste und wähle kopieren (Strg+C)
markiere eine leere Zelle unter der die kopierte Liste passt und wähle per Rechtsklick > Inhalte einfügen > [x] Transportieren > OK
Hiker
******
Beiträge: 590
Registriert: Mo, 08.09.2014 21:34
Wohnort: Berlin

Re: Leerzellen löschen! Nicht Zeilen! Spezielleres Problem!

Beitrag von Hiker »

1a-zuhause hat geschrieben: Mo, 11.01.2021 14:24 Servus Community,

vielleicht seit ihr ja bisschen schlauer als ich :D ... Ich knobel seit Wochen an einem Problem, finde den Fehler aber nicht und kann es auch nicht lösen ...

Worum geht es?
Ich baue gerade an einem Konzept zur Verbesserung der Datenverarbeitung im E-Business Bereich.
Mein Vorschlag wäre ja zur Verbesserung der Datenverarbeitung ein passendes Tool zu verwenden.
Listen sind eigentlich ein typisches Lisp-Konstrukt, das man aber in allen Modernen Programmiersprachen wie z.B. Python findet. Listen in eine Tabelle zu packen ist ein origineller Ansatz zur Verbesserung der Datenverarbeitung...

Aber mal ernsthaft:
1a-zuhause hat geschrieben: Mo, 11.01.2021 14:24
Grundproblem:
Legende: # = Zelle hat Wert / +=Leerzelle
Ist-Zustand:
Zeilen der Form
A1 B2 C1 D1 E1 F1 G1 H1 I1 ...
# # # + # + + + #
# + + + # + # # +

Sollzustand:
A1 B2 C1 D1 E1 F1 G1 H1 I1 ...
# # # # # + + + +
# # # # + + + + +

Die Zellwerte sind immer unterschiedlich!
Als direkter Ansatz bietet sich ein Makro an, das
genau macht, was Du beschreibst. Jede Zeile durcharbeiten und bei leeren Zellen Inhalte von weiter rechts kopieren.
Meine Methode der Wahl, wenn man das dauernd in der Tabellenkalkulation machen muss.

Für gelegentliche Fälle würde ich (erstmal ein Backup machen), dann die Tabelle nach csv exportieren und sicherstellen, dass mein Trennzeichen nicht IN Zellen vorkommt - meist nehme ich Tab.
In einem Editor wie Notepad++ aufeinanderfolgende Tabs durch jeweils einen einzelnen Ersetzen - geht auch mit regulären Ausdrücken im Writer.
Modifizierte csv-Datei wieder in Calc laden, dabei darauf achten, dass beim Import nichts durch die automatische Typerkennung geändert wird.

Mfg, Jörn

PS: Als Kombination meiner beiden Kommentare könte man auf die Idee kommen ein Python Makro zu schreiben, dass jede Tabellenzeile in eine Liste kopiert, dann die Originalzeile leert und die Liste dann in die Zeile zurückkopiert...
Libre Office 6.3.1 (Win 10 Pro) / Libre Office 6.0.7 (Win8.1 Pro, Win 7 Pro) / AOO (Win 7)
Hiker
******
Beiträge: 590
Registriert: Mo, 08.09.2014 21:34
Wohnort: Berlin

Re: Leerzellen löschen! Nicht Zeilen! Spezielleres Problem!

Beitrag von Hiker »

echo hat geschrieben: Mo, 11.01.2021 22:32
Die Werte in den Zellen dürfen aber von der Anordnung nicht verändert werden.
Ist verständlich was ich meine ?
...
oder ich habe es nicht verstanden was du möchtest ...
Gruß Holger
Im ersten Post stand noch, dass die Zellwerte immer unterschiedlich sein können.
Statt
# # # + # + + + #
# + + + # + # # +
ist der Ausgangszustand also z B.
a x c + f + + + f
s + + + f + d a +
und es sollen nur die + Zeichen (aka leere Zellen) nach rechts und die anderen (irgendwie gefüllten) Zellinhalte nach links - wenn ich das richtig verstehe

Mfg, Jörn
Libre Office 6.3.1 (Win 10 Pro) / Libre Office 6.0.7 (Win8.1 Pro, Win 7 Pro) / AOO (Win 7)
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Leerzellen löschen! Nicht Zeilen! Spezielleres Problem!

Beitrag von Stephan »

finde den Fehler aber nicht
Welcher Fehler tritt auf?

Grundproblem:
Legende: # = Zelle hat Wert / +=Leerzelle
Ist-Zustand:
Zeilen der Form
A1 B2 C1 D1 E1 F1 G1 H1 I1 ...
# # # + # + + + #
# + + + # + # # +
.
.
.
Sollzustand:
A1 B2 C1 D1 E1 F1 G1 H1 I1 ...
# # # # # + + + +
# # # # + + + + +
.
z.B.:
-Zellbereich markieren, kopieren
-als unformatierten Text in Writer einfügen
-doppelte Tabulatoren suchen und durch einfache Tabulatoren ersetzen
-einfache Tabulatoren suchen und durch SEmikolon ersetzen
-alles markieren, kopieren
-in Calc einfügen
-per "Text in Spalten" wieder auf Spalten aufteilen
Soooo, wenn das erledigt ist müssen noch die Zeilen in Spalten umgewandelt werden. Sodass alle Werte einer Zeile untereinander in einer Spalte stehen, ohne Leerzellen dazwischen.
markieren, kopieren und transponiert einfügen


Gruß
Stephan
Karolus
********
Beiträge: 7438
Registriert: Mo, 02.01.2006 19:48

Re: Leerzellen löschen! Nicht Zeilen! Spezielleres Problem!

Beitrag von Karolus »

Hallo

Nun ich machs kurz, Zellbereich Selektieren und folgendes ausführen :

Code: Alles auswählen

from itertools import zip_longest


def remove_empty_and_transpose(*_):
    doc = XSCRIPTCONTEXT.getDocument()
    sel = doc.CurrentSelection
    sheet = sel.Spreadsheet
    cursor = sheet.createCursorByRange(sel)
    cursor.gotoStart()
    out = []
    for i in range(sel.Rows.Count):
        row = sel[i,:]
        row_out = []
        for datablock in row.queryContentCells(15):
            row_out.extend(datablock.DataArray[0])
        out.append(row_out)
    size = max(len(data) for data in out)
    out = list(map(list,zip_longest(*out,fillvalue=''))) 
    sel.clearContents(1+2+4+8)
    
    cursor.collapseToSize(len(out[0]), size)
    cursor.setDataArray(out)
    
vorher musst du den Code in den Pfad <deine Benutzerkonfiguration>/Scripts/python/<Name-deiner-Wahl>.py speichern.
achte bitte darauf das sämtliche Einrückungen so wie hier in der Python-datei ankommen.
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
Antworten