expertenaustausch > comp.* > comp.office-pakete.staroffice.misc

Werner Holtfreter (29.07.2019, 03:49)
Hallo,

ich habe Spannungsverläufe aus der Ladung und Entladung von
Lithium-Akkus aufgezeichnet, in Calc importiert und dann als
Diagramm dargestellt.

Das Multimeter lieferte 3 Messwerte pro Sekunde, daher habe ich nun
rund 40.000 Datenpunkte, bestehend aus der Sekunden- und der
Spannungsspalte.

Jede Veränderung des Diagramms dauert minutenlang. Ungefähr 50 bis
100 Datenpunkte möchte ich daher zu einem verschmelzen. Idealer
Weise durch Mittelwertbildung. Natürlich will ich die
Mittelwertformel nicht von Hand in jede 50. Zelle eintragen. Gibt
es einen praktikablen Weg?
Robert Johnen (29.07.2019, 09:59)
Am Mon, 29 Jul 2019 03:49:59 +0200 schrieb Werner Holtfreter:

[...]
> Jede Veränderung des Diagramms dauert minutenlang. Ungefähr 50 bis
> 100 Datenpunkte möchte ich daher zu einem verschmelzen. Idealer
> Weise durch Mittelwertbildung. Natürlich will ich die
> Mittelwertformel nicht von Hand in jede 50. Zelle eintragen. Gibt
> es einen praktikablen Weg?


1. In 50. Zeile Formel eintragen =summe(x:y)/anzahl(x:y)
2. Zeile 1 bis 50 markieren
3. Anfasser unten rechts ziehen bis in letzte Zeile
alternativ:
3. Strg-C
4. Spalte bis zum Ende der Tabelle markieren
5. Strg-V

Gruß,
Robert
Christoph Schneegans (29.07.2019, 14:37)
Werner Holtfreter schrieb:

> Ungefähr 50 bis 100 Datenpunkte möchte ich daher zu einem
> verschmelzen. Idealer Weise durch Mittelwertbildung.


Angenommen, die Datenreihe befindet sich in Spalte A. Trag in B1
folgende Formel ein:

=CONCAT("A"; (ROW()-1)*50+1; ":"; "A"; (ROW()*50))

Dies liefert in B1 den String "A1:A50", in B2 "A51:A100" usw.

Trag dann in C1 folgende Formel ein:

=AVERAGE(INDIRECT(B1))

Dies liefert effektiv den Mittelwert von A1:A50.

Kommt mir ziemlich umständlich vor, aber ich kenne keinen eleganteren
Weg für sowas.
Werner Holtfreter (01.08.2019, 00:16)
Robert Johnen wrote:

> Am Mon, 29 Jul 2019 03:49:59 +0200 schrieb Werner Holtfreter:
> [...]
> 1. In 50. Zeile Formel eintragen =summe(x:y)/anzahl(x:y)
> 2. Zeile 1 bis 50 markieren
> 3. Anfasser unten rechts ziehen bis in letzte Zeile
> alternativ:
> 3. Strg-C
> 4. Spalte bis zum Ende der Tabelle markieren


Interessante Lösung. Mir war nicht bewusst, dass man auch eine
Gruppe von unterschiedlich gefüllten Zellen als Block mehrfach
kopieren kann.

Allerdings stehen die Ergebnisse dann nicht direkt untereinander.
Werner Holtfreter (01.08.2019, 00:17)
Christoph Schneegans wrote:

> Werner Holtfreter schrieb:
> Angenommen, die Datenreihe befindet sich in Spalte A. Trag in B1
> folgende Formel ein:
> =CONCAT("A"; (ROW()-1)*50+1; ":"; "A"; (ROW()*50))
> Dies liefert in B1 den String "A1:A50", in B2 "A51:A100" usw.
> Trag dann in C1 folgende Formel ein:
> =AVERAGE(INDIRECT(B1))
> Dies liefert effektiv den Mittelwert von A1:A50.
> Kommt mir ziemlich umständlich vor, aber ich kenne keinen
> eleganteren Weg für sowas.


Ist mir elegant genug, ich fürchtete schon, ein Makro wäre nötig.
Und es funktioniert prächtig, danke. Mit deutschen Schlüsselwörtern:

=VERKETTEN("A"; (ZEILE()-1)*50+1; ":"; "A"; (ZEILE()*50))
=MITTELWERT(INDIREKT(B1))
Eike Rathke (01.08.2019, 18:15)
* Werner Holtfreter, 2019-07-31 22:17 UTC:
>> =CONCAT("A"; (ROW()-1)*50+1; ":"; "A"; (ROW()*50))
>> =AVERAGE(INDIRECT(B1))

> Ist mir elegant genug, ich fürchtete schon, ein Makro wäre nötig.
> Und es funktioniert prächtig, danke. Mit deutschen Schlüsselwörtern:


> =VERKETTEN("A"; (ZEILE()-1)*50+1; ":"; "A"; (ZEILE()*50))
> =MITTELWERT(INDIREKT(B1))


Referenzen als Text mit INDIRECT() verarbeiten hat immer den Nachteil,
dass literale Teile der Referenz bei Verschiebung des Datenbereichs
nicht angepasst werden, hier z.B. wenn vor Spalte A eine Spalte
eingefuegt oder geloescht wird. OFFSET() ist da geeigneter, weil es
keine Konvertierung von Text beinhaltet. Das waere dann in C1

=MITTELWERT(VERSCHIEBUNG(A$1;(ZEILE()-ZEILE(A$1))*50;0;50;1))

und kann runter kopiert werden. Der Ausdruck ZEILE()-ZEILE($A$1) sorgt
dafuer, dass auch wenn oberhalb des Bereichs (hier ueber Zeile 1) Zeilen
eingefuegt oder geloescht werden die Berechnung des Offsets stimmt.

Eike
Christoph Schneegans (01.08.2019, 22:32)
Eike Rathke schrieb:

> OFFSET() ist da geeigneter, weil es keine Konvertierung von Text
> beinhaltet. Das waere dann in C1
> =MITTELWERT(VERSCHIEBUNG(A$1;(ZEILE()-ZEILE(A$1))*50;0;50;1))
> und kann runter kopiert werden.


Sehr schön! Ich hatte selber gehofft, daß das auch ohne INDIREKTion
geht.
Ähnliche Themen