Excel: Bezug zu vorhergehenden Zellen und Verweis auf andere

Hallo Zusammen,

ich habe eine umfangreiche Excel Tabelle mit Wertpapierkursen. Anhand der Kursentwicklung habe ich verschiedene Kauf-, Halte- und Verkaufssignale gebildet. Vereinfacht und exemplarisch sieht das so aus:

Spalte A // Spalte B
1630,55    Kaufen
1630,17    Halten
1564,33    Verkaufen
1564,77    Halten
1564,53    Kaufen
1564,02    Verkaufen
1564,97    Halten
1538,13    Halten
1538,53    Halten

Hat irgendwer eine Ahnung, wie ich jetzt bspw. eine Formel generieren kann, dass die Differenz zwischen „Verkaufen“ und dem zuletzt vorhergehenden „Kaufen“ errechnet werden kann. Also z.B. in einer neuen Zelle 1564,33-1630,55 oder 1564,02-1564,53 (mit relativen Bezügen, sodass ich das auf das gesamte Tabellenblatt übertragen kann).

Bedanke mich schonmal recht herzlich für konstruktive Hilfe!
Bart Simpson

Hallo
schau dir den Link mal an

  1. beachte den Hinweis zur {Matrix-Formel}
  2. in der Formel: …INDEX($A$1:blush:A3 … beachte, den unterschiedlichen Bezug von A1 bzw A3
    >> A1=absoluter Bezug ; A3 relativer Bezug der Zeile

Gruß Holger

Hallo Bart,

ich hätte da einen Vorschlag über eine eigene Funtion, falls der andere Tipp nicht passt:

Function diffValuesByKey(keyToSeek As String, seekToTop As Boolean, offsetValue As Integer, offsetSearchText As String) As Double

'keyToSeek: Text nach dem gesucht wird
'seekToTop: Suchrichtung, default (WAHR) ist nach oben
'offsetValue: Anzahl der Spalten die der Wert neben der Zelle mit der Formel steht. -1=eine nach Links, +2=zwei nach rechts
'offsetSearchText: Anzahl der Spalten die der zu findende Text neben der Zelle mit der Formel steht. -1=eine nach Links, +2=zwei nach rechts

Dim refValue, foundValue As Double
Dim seekRow, startCol, startRow As Integer

Application.Volatile

startCol = Application.Caller.Column
startRow = Application.Caller.Row

refValue = Cells(startRow, startCol + offsetValue).Value

If seekToTop Then
seekRow = startRow - 1
While seekRow > 0 And keyToSeek Cells(seekRow, startCol + offsetSearchText).Value
seekRow = seekRow - 1
Wend
Else
seekRow = startRow + 1
While Cells(seekRow, startCol + offsetSearchText).Value „“ And keyToSeek Cells(seekRow, startCol + offsetSearchText).Value
seekRow = seekRow + 1
Wend
End If

If (keyToSeek = Cells(seekRow, startCol + offsetSearchText).Value) Then
diffValuesByKey = refValue - Cells(seekRow, startCol + offsetValue).Value
End If

End Function

Ich hoffe, dass du schon mal Functionen in VBA gemacht hast. Sonst must du mal nachlesen, wie man die in sein Sheet bekommt.

fg

Dirk.P

oT: Re^2: Excel: Bezug zu vorhergehenden Zellen und Verweis auf andere
Hallo Holger,

ich bewundere alle, die so viel über Formeln erreichen, die ich nicht verstehe. Aber so eine eigene Function ist mir da doch lieber…

Dürfte aber Geschmacksache sein, sofern man sich grundsätzlich an VBA traut.

fg

Dirk.P

Vielen Dank schonmal euch zwei, wäre da so nicht drauf gekommen und schaue mal, was sich am besten davon umsetzen lässt. Vor VBA habe ich mich nämlich bisher immer erfolgreich gedrückt, aber da noch weitere spannende Auswertungen warten, könnte es sein, dass ich diesmal nicht drumherum komme :wink:

Einen schönen Feiertag!

Hallo Holger,

hat (wenn auch nach zweistündigem Probieren, weil die Zielzelle noch mehrere Bedingungen beinhaltet) alles geklappt. Nochmal vielen, vielen Dank!

1 Like

Hallo Dirk

Alternativen sind immer gut!
Formeln sind aber auch kein „Hexenwerk“ und manches mal auch die einzige Möglichkeit.
zB. unser Systemadministrator im Betrieb lässt keine Makros zu.
Ich kombiniere gerade mal DREI Funktionen um für die Berechnung den relevanten Wert zu bekommen.

Dürfte aber Geschmackssache sein, sofern man sich grundsätzlich an VBA traut

Ich kann das nur unterstreichen!

Gruß Holger