Für Hobbybörsianer
++ ExcelTools ++ Handelssysteme ++Chartanalyse

Kontakt   Impressum   AGBs

Formelgenerator

Nachdem man Kurslisten mit Aktienkursen oder ähnliche Daten vom Internet eingelesen hat stehen einem die ganzen Möglichkeiten von Excel zur Verfügung. Man kann jetzt eigene Berechnungen durchführen und diese immer wieder mit den Daten im Internet aktualisieren. Das spannende an dieser Geschichte ist natürlich die Anwendung eigener Formeln. Hierzu ist ein Formelgenerator ein nützlicher Helfer, der im folgenden näher vorgestellt wird.

Angenommen man hat eine Kursliste nach folgender Form:

A B C D E F G
  DAX    
  Datum Open High Low Close Eigene Formel:
Hoch - Tief
Formel in Spalte F
3 01.02.2007 6821,31 6874,77 6820,58 6851,28 54,19 C3-D3
4 02.02.2007 6853,77 6904,88 6848,17 6885,76 56,71 C4-D4
5 05.02.2007 6878,67 6891,13 6864,19 6874,06 26,94 C5-D5
6 06.02.2007 6881,9 6906,68 6862,19 6875,7 44,49 C6-D6
7 07.02.2007 6886,01 6924,46 6885,08 6915,56 39,38 C7-D7
8 08.02.2007 6911,24 6918,04 6849,85 6876,73 68,19 C8-D8
9 09.02.2007 6890,65 6928,98 6890,64 6911,11 38,34 C9-D9
10 12.02.2007 6892,03 6892,03 6844,39 6859,45 47,64 C10-D10
11 13.02.2007 6868,68 6895,52 6866,07 6895,34 29,45 C11-D11
12 14.02.2007 6912,56 6965,39 6907,91 6961,18 57,48 C12-D12
13 15.02.2007 6958,14 6972,44 6942,25 6958,62 30,19 C13-D13
14 16.02.2007 6955,71 6979,02 6941,03 6957,07 37,99 C14-D14
15 19.02.2007 6967,53 6996,01 6965,91 6987,08 30,1 C15-D15
16 20.02.2007 6978,52 6987,67 6936,08 6982,91 51,59 C16-D16
17 21.02.2007 6999,18 7005,34 6922,36 6941,66 82,98 C17-D17
18 22.02.2007 6959,37 7012,34 6955,57 6973,73 56,77 C18-D18
19 23.02.2007 6986,07 6998,27 6964,5 6992,58 33,77 C19-D19
20 26.02.2007 6992,12 7040,2 6980,25 7027,59 59,95 C20-D20

In unserem Beispiel soll also die Formel (Hoch-Tief) in Spalte F implementiert werden. Die übliche Vorgehenseise besteht darin, dass man in Zelle F3 die hierfür erforderliche Formel einträgt, also "=C3-D3". Nun markiert man die Zelle F3 und kopiert bei gedrückter Maus die Formel nach unten, bis man das Ende der Tabelle erreicht. Beim Loslassen der Maus werden dann alle Formeln berechnet und die Tabelle automatisch aktualisiert. Diese Methode hat einen entscheidenden Nachteil: Wenn die Tabelle Kurse über einen längeren Zeitraum enthält, können schon mal mehrere tausend Zellen zusammenkommen. Dann ist die eben vorgestellte Methode nervig und dauert relativ lange. Man kann dies aber dank VBA automatisieren.


Formel automatisch füllen

Das obige Beispiel kann noch verfeinert werden, indem man die Formel, die kopiert werden soll in die entsprechende Zelle schreibt, anschliessend diese Zelle selektiert und dann einfach über einen Mausklick das Makro zum Befüllen der Formel startet.

Makro:

Public Sub FillFormula()
Set ws = Worksheets("Tabelle1")
nmax = ws.Cells(Rows.count, 1).End(xlUp).Row
col = ActiveCell.Column
zielspalte$ = Chr$(64 + col)
Curcel$ = ActiveCell.Address
Selection.AutoFill Destination:=Range(Curcel$ & ":" & zielspalte$ & nmax), Type:=xlFillDefault
End Sub


Formelgenerator

Eine weitere Möglichkeit im VBA Code Formeln zu generieren ist noch flexibler und kann ohne vorherige Eingabe der Formel und Selektion der Zelle implementiert werden.

Dazu definiert man zuerst die zu berechnende Formel und schreibt diese in eine Variable:

Formel = "=C3-D3"

Anschliessend ermittelt man den Start und das Ende der Zeilen, für die das Kopieren der Formel gültig sein soll.

nstart=3
nmax=20

Nun fehlt noch die Zielspate der Formel, hier Spalte F:

ZielSpalte = "F"

Zu guter letzt kann man das Kopieren der Formel automatisieren:

Worksheets("Tabelle1").Range(ZielSpalte & nstart & ":" & ZielSpalte & nmax).FormulaLocal = Formel


Beispiel

Im folgenden Beispiel wird in Spalte G der Gleitende Durschnitt der letzten drei Schlusskurse berechnet. Dazu kann folgendes Makro eingesetzt werden:

Private Sub Formelgenerator()
Formel = "=(E5+E4+E3)/3"
nstart = 5
nmax = 20
ZielSpalte = "F"
Worksheets("Tabelle1").Range(ZielSpalte & nstart & ":" & ZielSpalte & nmax).FormulaLocal = Formel
End Sub