Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Rechnen mit Werten aus Array / Vektor

Rechnen mit Werten aus Array / Vektor
25.08.2013 19:27:14
Andi
Hallo zusammen,
ich habe verschiedene (variabel lange) Zeitreihen, auf deren Basis ich die tägliche Wertveränderung berechne und von diesen zum Beispiel den Mittelwert berechne.
Bis dato habe ich die Wertveränderungen separat berechnet und ausgegeben und dann den Mittelwert berechnet. Ich glaube aber, dass man das auch in einem array machen kann?!
Idee ist, die Ergebnisse für die täglichen Wertveränderungen in den array „zu schreiben“ und dann den array zu nutzen um zum Bsp. den Mittelwert oder die Varianz zu berechnen.
Habt ihr hierzu eine Idee?
Besten Dank und viele Grüße

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
tausend Vorschläge
25.08.2013 19:54:05
Christian
Hallo Andi,
wie wäre es denn, wenn Du Deine Datei zur Verfügung stellst?
Bei fast allen Helfern ist die Glaskugel noch im Wochenendmodus ;-)
MfG Christian

Ist viell nicht genau das, was du suchst, aber ...
25.08.2013 20:06:18
Luc:-?
…sicher wenigstens bsphaft nützlich, Andi … ;-]
UDF VectAr
Gruß Luc :-?

AW: Ist viell nicht genau das, was du suchst, aber ...
26.08.2013 13:37:49
Andi
Hallo,
vielen Dank!! Luc – das ist sicher ein tolles makro vielleicht steht sogar das drin, was ich suche aber leider steig ich da nicht durch...
Die Datei sieht beispielsweise so aus (jedoch mit bis zu 500? Werten je Reihe):
Userbild
Die Berechnung aus Spalte C wuerde ich gerne im array machen/ das Ergebnis dort ablegen und dann zum Beispiel den Mittelwert auf Basis des arrays bilden, der mir dann in „B1“ ausgegeben wird – aktuell habe ich das noch mit Formeln gemacht.
So nach dem Motto (auch wenn "etwas" einfach dargestellt)
Dim array
Array( d4 to D“letzteZeile“)
For x to letzteZeile
x(t)/x(t-1) – 1
next
B1= Mittelwert(array)
Besten Dank für Eure Hilfe

Anzeige
Da nutzt dir die UDF nicht viel, denn die ...
26.08.2013 15:52:12
Luc:-?
…wandelt entweder die Zeilen oder Spalten eines matrixförmigen Zellbereichs in Einzelvektoren um, die ebenfalls in einem Vektor zusammengefasst wdn (sog Variant mit einem Datenfeld). Das ist u.a. dann von Vorteil, wenn man zeilen- bzw spaltenorientierte Teilergebnisse bilden will. Du hast aber offensichtlich anderes vor.
Falls erforderlich melde ich mich im Laufe des Abends noch mal. Habe jetzt vorerst keine Zeit.
Gruß Luc :-?

Aber natürlich käme sie auch damit zurecht, ...
26.08.2013 21:37:38
Luc:-?
…Andi,
das kann MITTELWERT aber auch:
B1:{=MITTELWERT(B5:B32/B4:B31)}
Meine UDF liefert hier das gleiche Ergebnis:
B1:{=VectAr(B5:B32/B4:B31;1;1)}
Das könnte sie im Ggsatz zu den XlFktt TEILERGEBNIS und AGGREGAT auch für Teilergebnisse trotz des durch die Division entstehenden Datenfelds, das die beiden (neueren bis neuesten) XlFktt nicht mögen.
Damit könntest du auf Spalte C verzichten, was wohl der eigentliche Hintergrund für deinen VBA-Versuch ist.
Übrigens könntest du die beiden Fktt so nicht in einer VBA-Subprozedur einsetzen. Hier müsstest du tatsächlich erst das DivisionsDatenfeld (array) berechnen und dann diese Variable der jeweiligen Fkt als 1.Argument übergeben. Alternativ könntest du natürlich auch mit Cells(1, 2) = Evaluate("average(" & adBer1 & "/" & adBer2 & ")") (für Const adBer1$ = "B5:B32", adBer2$ = "B4:B31" ) in deinem Pgm arbeiten (fktt analog auch mit VectAr!), aber ein Pgm für nur einen Wert lohnt sich nicht, wenn man das auch mit einer Fml lösen kann.
Gruß Luc :-?

Anzeige
AW: Aber natürlich käme sie auch damit zurecht, ...
27.08.2013 17:10:11
Andi
Hallo Luc,
die Lösung über die Formel gefällt mir sehr gut!!
Gibt es hierfür auch die Möglichkeit den Bezug variabel zu gestalten? Die Reihe fängt immer in der gleichen Zeile an, kann aber unterschiedlich lang sein – hast du dafür noch eine Idee?
Besten Dank!!

Das kannst du ganz genau machen wollen, ...
27.08.2013 19:18:41
Luc:-?
…Andi,
oder dich einfach am größtmöglichen Zellbereich orientieren:
{=MITTELWERT(WENN(ISTLEER(B5:B132);"";B5:B132/B4:B131))}
Dann müssen aber alle der Endzeile folgenden Zeilen bis hier Zeile 132 leer bleiben!
Wolltest du die Endzeile ganz genau ermitteln, würde die Fml deutlich länger wdn (Konstrukte mit INDEX bzw INDIREKT).
Soll die ganze Spalte angegeben wdn, ginge das so:
{=MITTELWERT(WENN(ISTLEER(BEREICH.VERSCHIEBEN(B:B;4;0;99;1));"";BEREICH.VERSCHIEBEN(B:B;4;0;99;1) /BEREICH.VERSCHIEBEN(B:B;3;0;99;1))) }
(99 steht hier für die MaxAnzahl der Zeilen minus 1 Zeile) Aber das empfehle ich eher nicht (die Folgezeilen bis hier zur Zeile 103 müssen leer bleiben)!
Gruß Luc :-?
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige
Archiv - Verwandte Themen
Forumthread
Beiträge