Hallo Christian, hallo Michael,
Am 06.12.2010 23:29, schrieb Michael Höhne:
Hallo Christian,
Ich habe eine Tabelle mit etwas über dreihundert Zeilen. In jeder Zeile
steht vorne ein Name und dahinter 10 Spalten mit Daten.
Ich benötige nun ein Diagramm um die Daten schnell auszuwerten.
Da die Daten aber in sehr unterschiedlichen Liegen spielen (mal 15k +/- 2k
und mal 200 +/- 50) kann ich nicht einfach die ganze Liste markieren und
ein Diagramm erzeugen. Dann hab ich für die geringe Zeile eine Flatline.
...
Du könntest die Daten über eine weitere Tabelle normalisieren: Das
Minimum einer Zeile bekommt den Wert 0 und der größte Wert den Wert 1.
Beispiel:
Original:
Z1 1 2 -1 9 5
Z2 1000 1100 200 1500 300
Z3 0,5 2 -2 1,3 0,2
Eine andere Möglichkeit wäre, ein kleines Makro zu benutzen, welches das
Diagramm dynamisch ändert:
Nehmen wir an, die Tabelle beginnt in A1 und sieht so aus:
S1 S2 S3 S4 S5
Z1 1 2 -1 9 5
Z2 1000 1100 200 1500 300
Z3 0,5 2 -2 1,3 0,2
Dann erstellst Du in Zelle A1 eine Listbox
(Ansicht-Symbolleisten-Formular Steuerelemente), mit der Du die Zeilen
auswählst (Kontrollelement, Eigenschaften).
Als Quellbereich wählst Du A2:A4.
Der ListBox weist Du über Ereignisse, Status geändert folgendes Makro zu:
Sub itemState_Changed(e)
'keine Mehrfachselektion in der ListBox möglich
row = e.source.model.selectedItems(0)
' Datenbereiche
Dim aRanges(2) as new com.sun.star.table.CellRangeAddress
' Datenbereich für Achsen-Beschriftung
aRanges(0).StartColumn=0
aRanges(0).EndColumn=5
aRanges(0).StartRow=0
aRanges(0).EndRow=0
' Datenbereich für ausgewählte Zeile
aRanges(1).StartColumn=0
aRanges(1).EndColumn=5
aRanges(1).StartRow=row+1
aRanges(1).EndRow=row+1
' Hier ist mit 0 das erste Tabellenblatt bzw. das erste Chart gemeint
Thiscomponent.getSheets().getByIndex(0).getCharts().getByIndex(0).setRanges(aRanges())
End Sub
Gruß Peter
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]