ubuntuusers.de

LibreOffice Diagramm erstellen, richtige Zellenauswahl

Status: Gelöst | Ubuntu-Version: Kubuntu 20.04 (Focal Fossa)
Antworten |

Zoner

Anmeldungsdatum:
30. August 2019

Beiträge: 121

Ich möchte in LibreCalc ein Diagramm erstellen, habe aber Schwierigkeiten mit dem Datenbereich (Data Range).

Die Daten folgen nicht direkt hintereinander (A1, A2, A3...), sondern ab A33 jede 16. Zeile (also A33, A49, A65...). Dazwischen befinden sich ein haufen anderer Zahlen, die aber für das Diagramm nicht relevant sind und ignoriert werden sollen.

Wie kann ich das Diagramm anweisen, ab A33 jede 16. Zeile nur auszuwerten? (es sind insgesamt um die 100 Datenpunkte, die ich als Liniendiagramm darstellen möchte)

Die einzige Möglichkeit die mir einfällt, händisch all diese Daten in einer extra Spalte Zeile für Zeile direkt hintereinander zu kopieren. Aber das ist erstens extrem aufwendig und nimmt völlig unnötig Platz in der Tabelle weg (ich möchte dafür auch kein extra Sheet aufmachen).

Über google finde ich tausende "Zellen-Funktionen" z.B. "Indirect" oder "Row" scheinen etwas zu sein, was ich benötige aber ich verstehe es nicht oder es sind noch nicht die richtigen Funktionen. Über die Suche das zu finden, was ich vorhabe ist auch unglaublich schwer.

seahawk1986

Anmeldungsdatum:
27. Oktober 2006

Beiträge: 11263

Wohnort: München

Ich würde da ja lieber ein Tool nehmen, das einem da mehr Freiheiten lässt und es nicht nötig macht, dass man in seinen Daten Code unterbringen muss - z.B. Pandas mit pyplot - also die Pakete python3-pandas, python3-odf und python3-matplotlib installieren - und dann sollte so etwas möglich sein, um die ersten beiden Spalten beginnend bei der 33. Zeile (die Zählung der Elemente des zweidimensionalen Array im Code geht jeweils mit 0 los) und einem Abstand von 16 Zeilen gegeneinander zu plotten:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
#/usr/bin/env python3
import pandas as pd
import matplotlib.pyplot as plt

data = pd.read_excel("demo.ods", header=None, engine="odf")

view = data[32::16]
plt.plot(view[0], view[1])

plt.savefig("plot.svg")
demo.ods (9.3 KiB)
Download demo.ods
plot.svg (15.4 KiB)
Download plot.svg

hakel2020

Anmeldungsdatum:
21. Januar 2021

Beiträge: 1169

Die Funktion heißt Verschiebung, (x*16) als Zeilenverschiebung.

Das Libreforum wäre vermutlich sinnvoller.

P.S. Diagramme finde ich auf einem separaten Blatt aber sehr ordentlich und übersichtlich.

sh4711

Anmeldungsdatum:
13. Februar 2011

Beiträge: 1181

Hallo Zoner,

du kannst auch die Zellen, welche für deine Auswertung interessant sind händig (oder per Makro) markieren und dann über Einfügen/Diagramm dein gewünschtes Diagramm in Calc erstellen.

Hier ein Makro mit dem die Zellen, welche laut deiner Aussage interessant sind, markiert werden.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
Sub SelectMyCells

Dim MaxDatenpunkte, i as long
Maxdatenpunkte = 10

DIM RngAddrs(MaxDatenpunkte-1) AS New com.sun.star.table.CellRangeAddress

CellRngs = ThisComponent.createInstance("com.sun.star.sheet.SheetCellRanges")

for i = 0 to MaxDatenpunkte-1
	RngAddrs(i).Sheet = 0
	RngAddrs(i).StartColumn = 0
	RngAddrs(i).StartRow = 33-1 + i*16
	RngAddrs(i).EndColumn = 0
	RngAddrs(i).EndRow = 33-1 + i*16
next i	

CellRngs.addRangeAddresses(RngAddrs, FALSE)
ThisComponent.CurrentController.select(CellRngs)

End Sub

Quelle bzw. Basis: https://forum-test.openoffice.org/en/forum/viewtopic.php?f=20&t=101202#p487782

In Zeile drei werden die maximalen Datenpunkte festgelegt. Hier in dem Test bin ich von 10 ausgegangen. Deiner Aussage zufolge sind es "... um die 100 ...". Bitte ersetze im Code die 10 durch deine genaue Anzahl.

Zellen_mehrfach_auswahlen.ods (10.8 KiB)
Download Zellen_mehrfach_auswahlen.ods
Antworten |