Seite 2 von 2
Re: Zellinhalte vergleichen und Leerzeilen einfügen
Verfasst: Mo, 04.11.2013 15:47
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)

Re: Zellinhalte vergleichen und Leerzeilen einfügen
Verfasst: Di, 05.11.2013 05:00
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!
Re: Zellinhalte vergleichen und Leerzeilen einfügen
Verfasst: Di, 05.11.2013 05:10
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?
Re: Zellinhalte vergleichen und Leerzeilen einfügen
Verfasst: Di, 05.11.2013 05:45
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
Re: Zellinhalte vergleichen und Leerzeilen einfügen
Verfasst: Di, 05.11.2013 08:48
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
Re: Zellinhalte vergleichen und Leerzeilen einfügen
Verfasst: Di, 05.11.2013 08:55
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

Re: Zellinhalte vergleichen und Leerzeilen einfügen
Verfasst: Di, 05.11.2013 09:33
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
Re: Zellinhalte vergleichen und Leerzeilen einfügen
Verfasst: Di, 05.11.2013 09:53
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

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.
Re: Zellinhalte vergleichen und Leerzeilen einfügen
Verfasst: Di, 05.11.2013 12:47
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

Re: Zellinhalte vergleichen und Leerzeilen einfügen
Verfasst: Di, 05.11.2013 14:40
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