Seite 1 von 1

Bedingtes Transponieren von oo Tabellen [gelöst]

Verfasst: Sa, 23.01.2016 19:41
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.

Re: Bedingtes Transponieren von oo Tabellen

Verfasst: Sa, 23.01.2016 20:34
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).

Re: Bedingtes Transponieren von oo Tabellen

Verfasst: Sa, 23.01.2016 21:52
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

Re: Bedingtes Transponieren von oo Tabellen

Verfasst: So, 24.01.2016 16:43
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.

Re: Bedingtes Transponieren von oo Tabellen

Verfasst: So, 24.01.2016 16:52
von F3K Total
Na, man muß Makros zulassen, unter Extras/Einstellungen/OpenOffice/Sicherheit/Makrosicherheit -> wenigstens Stufe Mittel
Gruß R

Re: Bedingtes Transponieren von oo Tabellen

Verfasst: So, 24.01.2016 17:14
von hansen65
woha, stimmt das wars, funktioniert jetzt einwandfrei.

Allerbesten Dank!!!