Zellinhalte vergleichen und Leerzeilen einfügen

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Zellinhalte vergleichen und Leerzeilen einfügen

Beitrag von clag »

ok dann etwas genauer

du extrahierst dir eine Liste aller Bands in eine Spalte
die Bandnamen markierst und kopierst du
dann springst du an das Ende deiner Bandspalte in der großem Tabelle mit ctrl cursortaste runter
dort fügst du die kopierten Namen einmal ein und füllst dann die Spalte Album mit dem " ' " Platzhalter
ist das erledigt fügst du noch einmal die kopierten Namen in er Spalte Band ein
spring mit ctrl Pos1 an den Anfang der Tabelle füge eine Spalte ein
in die zweite Zeile der neuen Spalte die Formel eingeben und runter ziehen so weit wie nötig ist nicht gut weil Format mit übertragen wird
besser ist es die Formel zu kopieren und über "Inhalte einfügen" nur die Formel in den Bereich einfügen
fertig

(das schreiben wie es geht hat vermutlich doppelt so lange gedauert wie die Aktion selbst) :lol:
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
DDzzz
*
Beiträge: 14
Registriert: Mo, 14.10.2013 18:05

Re: Zellinhalte vergleichen und Leerzeilen einfügen

Beitrag von DDzzz »

Ich bin jetzt mit paljass' version gefahren weil es dringend war aber nächstes Jahr zur gleichen Zeit steht wieder die gleiche Arbeit an dann probiere ich mal welche Version einfacher für mich ist. Den paljass-schen Ansatz durchschaue ich allerdings immernoch nicht ;-) Vielen Dank euch Beiden, ihr habt mir wirklich enorm geholfen!
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Zellinhalte vergleichen und Leerzeilen einfügen

Beitrag von clag »

Moin DDzzz,
DDzzz hat geschrieben:ich bin nur gerade hochgradig übermüdet, überarbeitet und überfordert weil ich schon die ganze Nacht an der Lösung sitze

na jetzt ausgeschlafen :)

Wo klemmt es denn nun bzw was ist nicht durchschaubar für dich?
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Zellinhalte vergleichen und Leerzeilen einfügen

Beitrag von clag »

Hallo

habe mal deine Komplette Liste bearbeitet mit BF und auf eigenem Blatt
da kannst du die Darstellung ganz fix anpassen, durch ändern der zwei Vorlagen Band und Album (F11) :)

Edit:
komplette Liste entfernt, jetzt eine gekürzte Version um das Prinzip zu verdeutlichen
CD(2)_fertig_gekürzt.ods
(32.77 KiB) 43-mal heruntergeladen
Zuletzt geändert von clag am Di, 05.11.2013 13:14, insgesamt 1-mal geändert.
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Karolus
********
Beiträge: 7532
Registriert: Mo, 02.01.2006 19:48

Re: Zellinhalte vergleichen und Leerzeilen einfügen

Beitrag von Karolus »

Hallo

ich hab das mal mit ein paar Zeilen Python gelöst - die gut 9000 Zeilen aus der kompletten Datei sind in < 0.3 sec durch.

Code: Alles auswählen

context = XSCRIPTCONTEXT

def groupbyfirstcolumn():
    doc = context.getDocument()
    cur_sel = doc.getCurrentSelection()
    sheet = cur_sel.Spreadsheet
    cursor = sheet.createCursor()
    cursor.gotoStartOfUsedArea( False )
    cursor.gotoEndOfUsedArea( True )
    data = cursor.getDataArray()

    header = data[0][0]
    outdata = [(header,'','',''),]

    for row in data:
        if not row[0]== header:
            header = row[0]
            outdata.append((header,'','',''))
        outdata.append(row[1:])

    firstcol, firstrow = len(data[0])+1, 0
    colsize, rowsize = map( len, [outdata[0], outdata])
    lastcol, lastrow = firstcol + colsize -1, firstrow + rowsize -1
    target = sheet.getCellRangeByPosition(firstcol, firstrow, lastcol, lastrow )
    target.setDataArray( tuple(outdata))
 
Die Ausgabe erfolgt rechts neben den Ausgangsdatensätzen.
Die neue Spalte mit den Preisen muss dann nachträglich als 'Währung' formatiert werden.

Karolus
Zuletzt geändert von Karolus am Di, 05.11.2013 08:56, insgesamt 1-mal geändert.
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Zellinhalte vergleichen und Leerzeilen einfügen

Beitrag von clag »

Hallo Karolus,

das ist jetzt aber ne echte Schlappe für paljass's und clag's Bemühungen,
bei der Ausführungszeit können wir einpacken :lol:
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Karolus
********
Beiträge: 7532
Registriert: Mo, 02.01.2006 19:48

Re: Zellinhalte vergleichen und Leerzeilen einfügen

Beitrag von Karolus »

Hallo

Ich hab das nicht gepostet um ""euch eine Schlappe zu erteilen""

Ich würde aber Rückmeldungen/Rückfragen begrüßen, damit ich weiss ob hier überhaupt Bedarf besteht.

Karolus
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Zellinhalte vergleichen und Leerzeilen einfügen

Beitrag von clag »

Hallo Karolus,

es sind ja drei recht verschiedene Wege der Herangehensweise,
also ich fühle mich da überhaupt nicht überfahren.
Ich hatte ja extra den :lol: gesetzt damit es nicht so ernst erscheint.

Ich persönlich begrüße immer sachlich vorgetragene Korrekturen oder Optimierungen oder gänzlich neue Ideen,
da es ja auch immer irgendwie eine Erweiterung des eigenen OO/EDV/Computer Horizonts bedeutet.
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
DDzzz
*
Beiträge: 14
Registriert: Mo, 14.10.2013 18:05

Re: Zellinhalte vergleichen und Leerzeilen einfügen

Beitrag von DDzzz »

@Clag, ich habe das split-Archiv runtergeladen, kann weg ;-)
@Karolus: Vielen Dank, das sieht noch effektiver aus! Jetzt bin ich gerade dabei mich mit Python-Einbindung in OO zu belesen :-)
Karolus
********
Beiträge: 7532
Registriert: Mo, 02.01.2006 19:48

Re: Zellinhalte vergleichen und Leerzeilen einfügen

Beitrag von Karolus »

Hallo
@Karolus: Vielen Dank, das sieht noch effektiver aus! Jetzt bin ich gerade dabei mich mit Python-Einbindung in OO zu belesen
Bei den ersten Schritten kann ich dir etwas helfen, im angehängten Dokument ist ein Script mit folgendem Inhalt eingebettet:

Code: Alles auswählen

import uno
from os import path


context = XSCRIPTCONTEXT

ctx = uno.getComponentContext()
servicemanager = ctx.ServiceManager
createUnoService = servicemanager.createInstance
file_access = createUnoService("com.sun.star.ucb.SimpleFileAccess")
pathsubstution = createUnoService("com.sun.star.util.PathSubstitution")

def install_me(*_):
    """
    Funktion zum kopieren dieses eingebetteten Pythonscripts
    ins den .userconfig_python_pfad"""

    pythonfolder = pathsubstution.substituteVariables('$(user)/Scripts/python/',0)
    filename = path.basename(__file__)
    if not file_access.isFolder( pythonfolder):
        file_access.createFolder(pythonfolder)
    file_access.copy(__file__, path.join( pythonfolder, filename))


def groupbyfirstcolumn():
    doc = context.getDocument()
    cur_sel = doc.getCurrentSelection()
    sheet = cur_sel.Spreadsheet
    cursor = sheet.createCursor()
    cursor.gotoStartOfUsedArea( False )
    cursor.gotoEndOfUsedArea( True )
    data = cursor.getDataArray()

    header = data[0][0]
    outdata = [(header,'','',''),]

    for row in data:
        if not row[0]== header:
            header = row[0]
            outdata.append((header,'','',''))
        outdata.append(row[1:])

    firstcol, firstrow = len(data[0])+1, 0
    colsize, rowsize = map( len, [outdata[0], outdata])
    lastcol, lastrow = firstcol + colsize -1, firstrow + rowsize -1
    target = sheet.getCellRangeByPosition(firstcol, firstrow, lastcol, lastrow )
    target.setDataArray( tuple(outdata))

 
Das kannst du per →Makro→Makro ausführen →→Thema62708_ScriptContainer→groupby→install_me >'ausführen'
Und das Ding erstellt automatisch (-falls noch nicht vorhanden- ) ein 'Python'-verzeichniss an der richtigen Stelle in deiner Benutzerkonfiguration und kopiert die Scriptdatei dort hinein.

Karolus
Dateianhänge
Thema_62708_scriptcontainer.ods
(7.75 KiB) 35-mal heruntergeladen
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Antworten