Hallo,
ich habe folgendes Problem, ich würde gerne Daten die derzeit untereinander erscheinen, in einer Reihe darstellen.
Allerdings Sind die Daten recht unvollständig, sie haben allerdings immer einen Wert der sie als Datenset (später Reihe) zusammenfasst und ein Wert, aus dem sich ergibt, in welche Spalte der Wert geschrieben werden muss.
Ich habe das ganze mal als Bild und Tabelle angehängt, evtl. kennt da ja jmd. eine elegante Lösung.
Bedingtes Transponieren von oo Tabellen [gelöst]
Moderator: Moderatoren
Bedingtes Transponieren von oo Tabellen [gelöst]
- Dateianhänge
-
- data-remodel.png (21.51 KiB) 1613 mal betrachtet
-
- data-remodel.ods
- (54.17 KiB) 94-mal heruntergeladen
Zuletzt geändert von hansen65 am So, 24.01.2016 17:15, insgesamt 1-mal geändert.
Re: Bedingtes Transponieren von oo Tabellen
Hallo,
per Formeln ist es machbar. Für meine Lösung ist es wichtig, dass die Originaldaten erst in Zeile 2 beginnen (daher habe ich eine Zeile eigefügt.
Im Target habe ich eine Zeile mit den ID und eine Spalte mit den Nummern eingefügt (kann man formeltechnisch auch noch umgehen oder ausblenden).
per Formeln ist es machbar. Für meine Lösung ist es wichtig, dass die Originaldaten erst in Zeile 2 beginnen (daher habe ich eine Zeile eigefügt.
Im Target habe ich eine Zeile mit den ID und eine Spalte mit den Nummern eingefügt (kann man formeltechnisch auch noch umgehen oder ausblenden).
- Dateianhänge
-
- data-remodel.ods
- (15.55 KiB) 105-mal heruntergeladen
Gruß,
mikeleb
mikeleb
Re: Bedingtes Transponieren von oo Tabellen
Hallo Mikele, Chapeau!
Habe, das Makro, an dem ich gearbeitet habe gerade fertig, geht auch, siehe Anlage.
Gruß R
Habe, das Makro, an dem ich gearbeitet habe gerade fertig, geht auch, siehe Anlage.
Code: Alles auswählen
Sub Transpose
aVector = Array(14,15,3,2,6,4,1)
oSheet = ThisComponent.Sheets.Tabelle1
oCursor = oSheet.createCursor
oCursor.gotoEndofUsedarea(false)
nEndrow = oCursor.Rangeaddress.EndRow
oSourceRange = oSheet.getcellRangebyPosition(1,0,3,nEndRow)
adata = oSourceRange.getdataarray
nBound = adata(uBound(adata))(2)- adata(0)(2)
oTargetRange = oSheet.getcellrangebyPosition(6,1,12,nBound+1)
aNewData = oTargetRange.Getdataarray
nCounter = 0
aRow = aNewData(nCounter)
i_old = 1
for i = 0 to uBound(aData)
if adata(i)(2) > i_old then
aNewData(nCounter) = aRow
nCounter = nCounter + 1
aRow = aNewData(nCounter)
endif
i_old = adata(i)(2)
for k = 0 to 6
if adata(i)(0) = aVector(k) then arow(k) = adata(i)(1)
next k
next i
aNewData(nCounter) = aRow
oTargetRange.setdataarray(aNewData)
End Sub
- Dateianhänge
-
- data-remodel.ods
- (13.53 KiB) 146-mal heruntergeladen
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 11: AOO, LO Linux Mint: AOO, LO
Re: Bedingtes Transponieren von oo Tabellen
Hallo,
super, vielen Dank für eure schnellen Antworten!
Mit der Formel Lösung kann ich arbeiten, das funktioniert sehr gut.
Die Lösung mit dem Makro habe ich nicht zum laufen bekommen, wenn ich auf den Button drücke oder auf Makro ausführen klicke passiert nichts.
Evtl. hast du ja noch eine Idee woran das liegen könnte.
super, vielen Dank für eure schnellen Antworten!
Mit der Formel Lösung kann ich arbeiten, das funktioniert sehr gut.
Die Lösung mit dem Makro habe ich nicht zum laufen bekommen, wenn ich auf den Button drücke oder auf Makro ausführen klicke passiert nichts.
Evtl. hast du ja noch eine Idee woran das liegen könnte.
Re: Bedingtes Transponieren von oo Tabellen
Na, man muß Makros zulassen, unter Extras/Einstellungen/OpenOffice/Sicherheit/Makrosicherheit -> wenigstens Stufe Mittel
Gruß R
Gruß R
Zuletzt geändert von F3K Total am So, 24.01.2016 17:16, insgesamt 1-mal geändert.
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 11: AOO, LO Linux Mint: AOO, LO
Re: Bedingtes Transponieren von oo Tabellen
woha, stimmt das wars, funktioniert jetzt einwandfrei.
Allerbesten Dank!!!
Allerbesten Dank!!!