Bedingtes Transponieren von oo Tabellen [gelöst]

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

hansen65
Beiträge: 5
Registriert: Do, 18.02.2010 20:55

Bedingtes Transponieren von oo Tabellen [gelöst]

Beitrag von hansen65 »

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.
Dateianhänge
data-remodel.png
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.
mikeleb
*******
Beiträge: 1412
Registriert: Fr, 09.12.2011 16:50

Re: Bedingtes Transponieren von oo Tabellen

Beitrag von mikeleb »

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).
Dateianhänge
data-remodel.ods
(15.55 KiB) 105-mal heruntergeladen
Gruß,
mikeleb
F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Re: Bedingtes Transponieren von oo Tabellen

Beitrag von F3K Total »

Hallo Mikele, Chapeau!
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
Gruß R
Dateianhänge
data-remodel.ods
(13.53 KiB) 146-mal heruntergeladen
hansen65
Beiträge: 5
Registriert: Do, 18.02.2010 20:55

Re: Bedingtes Transponieren von oo Tabellen

Beitrag von hansen65 »

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.
F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Re: Bedingtes Transponieren von oo Tabellen

Beitrag von F3K Total »

Na, man muß Makros zulassen, unter Extras/Einstellungen/OpenOffice/Sicherheit/Makrosicherheit -> wenigstens Stufe Mittel
Gruß R
Zuletzt geändert von F3K Total am So, 24.01.2016 17:16, insgesamt 1-mal geändert.
hansen65
Beiträge: 5
Registriert: Do, 18.02.2010 20:55

Re: Bedingtes Transponieren von oo Tabellen

Beitrag von hansen65 »

woha, stimmt das wars, funktioniert jetzt einwandfrei.

Allerbesten Dank!!!
Antworten