Moving Average Dieses Beispiel lehrt Sie, wie Sie den gleitenden Durchschnitt einer Zeitreihe in Excel berechnen können. Ein gleitender Durchschnitt wird verwendet, um Unregelmäßigkeiten (Gipfel und Täler) zu glätten, um Trends leicht zu erkennen. 1. Zuerst schauen wir uns unsere Zeitreihen an. 2. Klicken Sie auf der Registerkarte Daten auf Datenanalyse. Hinweis: Kann die Schaltfläche Datenanalyse nicht finden Hier klicken, um das Analysis ToolPak-Add-In zu laden. 3. Wählen Sie Moving Average und klicken Sie auf OK. 4. Klicken Sie in das Feld Eingabebereich und wählen Sie den Bereich B2: M2. 5. Klicken Sie in das Feld Intervall und geben Sie 6 ein. 6. Klicken Sie in das Feld Ausgabebereich und wählen Sie Zelle B3. 8. Zeichnen Sie einen Graphen dieser Werte. Erläuterung: Da wir das Intervall auf 6 setzen, ist der gleitende Durchschnitt der Durchschnitt der bisherigen 5 Datenpunkte und der aktuelle Datenpunkt. Dadurch werden Gipfel und Täler geglättet. Die Grafik zeigt einen zunehmenden Trend. Excel kann den gleitenden Durchschnitt für die ersten 5 Datenpunkte nicht berechnen, da es nicht genügend vorherige Datenpunkte gibt. 9. Wiederholen Sie die Schritte 2 bis 8 für Intervall 2 und Intervall 4. Fazit: Je größer das Intervall, desto mehr werden die Gipfel und Täler geglättet. Je kleiner das Intervall ist, desto näher sind die gleitenden Mittelwerte zu den tatsächlichen Datenpunkten. Rolling Average Table Nachfolgend sehen wir uns ein Programm in Excel VBA an, das eine rollende durchschnittliche Tabelle erstellt. Setzen Sie eine Befehlsschaltfläche auf Ihr Arbeitsblatt und fügen Sie die folgende Codezeile hinzu: Bereich (quotB3quot).Value WorksheetFunction. RandBetween (0, 100) Diese Codezeile gibt eine Zufallszahl zwischen 0 und 100 in Zelle B3 ein. Wir wollen, dass Excel VBA den neuen Aktienwert einnimmt und ihn an die erste Position der rollenden Durchschnittstabelle stellt. Alle anderen Werte sollten sich um einen Platz bewegen und der letzte Wert sollte gelöscht werden. Erstellen Sie ein Worksheet Change Event. Code, der dem Worksheet Change Event hinzugefügt wird, wird von Excel VBA ausgeführt, wenn Sie eine Zelle auf einem Arbeitsblatt ändern. 2. Doppelklicken Sie im Projekt-Explorer auf Sheet1 (Sheet1). 3. Wählen Sie Arbeitsblatt aus der linken Dropdown-Liste aus. Wählen Sie aus der rechten Dropdown-Liste die Option Ändern. Fügen Sie dem Worksheet Change Event folgende Codezeilen hinzu: 4. Deklarieren Sie eine Variable namens newvalue vom Typ Integer und zwei Bereiche (firstfourvalues und lastfourvalues). Dim Neuwert als Integer. Firstfourvalues As Range, lastfourvalues Als Range 5. Das Worksheet Change Event hört alle Änderungen auf Sheet1. Wir wollen nur Excel VBA etwas tun, wenn sich etwas in Zelle B3 ändert. Um dies zu erreichen, füge die folgende Codezeile hinzu: Wenn Target. Address quotB3quot Then 6. Wir initialisieren Neuwert mit dem Wert der Zelle B3, firstfourvalues mit Range (quotD3: D6quot) und lastfourvalues mit Range (quotD4: D7quot). Newvalue Range (quotB3quot).Value Set firstfourvalues Bereich (quotD3: D6quot) Set lastfourvalues Bereich (quotD4: D7quot) 7. Jetzt kommt der einfache Trick. Wir wollen die rollende durchschnittliche Tabelle aktualisieren. Sie erreichen dies, indem Sie die letzten vier Werte durch die ersten vier Werte der Tabelle ersetzen und den neuen Aktienwert an die erste Position stellen. Lastfourvalues. Value firstfourvalues. Value Range (quotD3quot).Value newvalue 8. Vergessen Sie nicht, die if-Anweisung zu schließen. 9. Geben Sie schließlich die Formel AVERAGE (D3: D7) in die Zelle D8 ein. 10. Testen Sie das Programm, indem Sie auf die Befehlsschaltfläche klicken. Ich möchte einen gleitenden Durchschnitt der letzten, sagen 20, Zahlen einer Spalte zu berechnen. Ein Problem ist, dass einige der Zellen der Spalte leer sein können, sollten sie ignoriert werden. Beispiel: Ein gleitender Durchschnitt der letzten drei wäre (155167201) 3. Ive versucht, dies mit Mittelwert, Offset, Index zu implementieren, aber ich weiß einfach nicht, wie. Im ein bisschen vertraut mit Makros, so eine solche Lösung würde gut funktionieren: MovingAverage (A13) Vielen Dank für alle Tipps oder Lösungen gefragt Mar 12 11 um 15:36 Geben Sie dies mit controlshiftenter, um es eine Array-Formel zu machen. Hier finden Sie die letzten drei Werte. Wenn Sie mehr oder weniger wollen, ändern Sie die beiden Instanzen von 3 in der Formel, was auch immer Sie wollen. Dieser Teil gibt die 4. höchste Zeilennummer aller Zellen mit einem Wert oder 5 in deinem Beispiel zurück, da die Zeilen 6, 8 und 9 die 1. bis 3. höchsten Zeilen mit einem Wert sind. Dieser Teil gibt 9 TRUEs oder FALSEs zurück, je nachdem, ob die Zeilennummer größer als die 4. größte ist. Dies multipliziert die Werte in A1: A9 mit diesen 9 TRUEs oder FALSEs. TRUEs werden in 1 und FALSEs auf Null umgewandelt. Dies verlässt eine SUM-Funktion wie folgt Da alle Werte über 155 nicht das Zeilennummerkriterium erfüllen, wird das mit Null multipliziert. Ich habe ein kurzes Skript in VBA geschrieben. Hoffentlich tut es was du willst. Hier sind Sie: 1) Ich habe Limit auf 360 Zellen gesetzt. Es bedeutet, dass das Skript nicht mehr als 360 Zellen sucht. Wenn Sie es ändern möchten, ändern Sie den Anfangswert des Zählers. 2) Das Skript gibt keinen abgerundeten Durchschnitt zurück. Ändern Sie die letzte Zeile in MovingAverage Round (CDbl (tmp i), 2) 3) Die Verwendung ist genau wie Sie wollten, also geben Sie einfach MovingAverage (a13) in die Zelle ein. Alle Kommentare sind willkommen.
Comments
Post a Comment