Text aus tabelle1.A1 B1 mal in tabelle2.A, dann tabelle1.A2 B2 mal in tabelle2.A ausgeben usw.

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Karolus
********
Beiträge: 7440
Registriert: Mo, 02.01.2006 19:48

Re: Text aus tabelle1.A1 B1 mal in tabelle2.A, dann tabelle1.A2 B2 mal in tabelle2.A ausgeben usw.

Beitrag von Karolus »

Hallo
Lösung in zwei Schritten ohne Makro:
  • 1) nimm in Ausgabe.A1 die Formel =WIEDERHOLEN(Eingabe.A1 & ZEICHEN( 13); Eingabe.B1) und ziehe die Formel nach unten so weit wie nötig.
  • 2. Markiere den Bereich mit den Formeln und gehe zu →Daten→Text in Spalten (ohne irgendwelche Trennzeichen) →→ok
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
Karolus
********
Beiträge: 7440
Registriert: Mo, 02.01.2006 19:48

Re: Text aus tabelle1.A1 B1 mal in tabelle2.A, dann tabelle1.A2 B2 mal in tabelle2.A ausgeben usw.

Beitrag von Karolus »

Hallo

Lösung mit python für libreoffice >= Version 5.1

Selektiere den zweispaltigen Ausgangsbereich und starte:

Code: Alles auswählen

def repeat_entries():
    calcdoc = XSCRIPTCONTEXT.getDocument()
    sel = calcdoc.CurrentSelection
    out = []
    for entry, count in sel.DataArray:
        out.extend((entry,)*int(count))

    out = tuple(zip(out))
    target = calcdoc.Sheets.getByName('Ausgabe')
    target[ :len(out), 0].DataArray = out

Variante für AOO und LO allgemein:

Code: Alles auswählen

def repeat_entries():
    calcdoc = XSCRIPTCONTEXT.getDocument()
    sel = calcdoc.CurrentSelection
    out = []
    for entry, count in sel.DataArray:
        out.extend((entry,)*int(count))

    out = tuple(zip(out))
    target = calcdoc.Sheets.getByName('Ausgabe')
    target.getCellRangeByPosition(0, 0, 0, len(out)-1 ).DataArray = out
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
Antworten