Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1500to1504
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Position in einer Range wiedergeben VBA

Position in einer Range wiedergeben VBA
02.07.2016 20:23:20
Max
Hallo, ich schreibe gerade an einer Funktion, die alle Werte einer interpolierten Zinsstrukturkurve speichern soll. Interpolation zwischen erstem und letztem vorgegebenem Zeitpunkt funktioniert bereits, nun möchte ich allerdings noch zu allen Zeitpunkten vor dem ersten bzw. nach dem letzten gegebenen Zeitpunkt konstant interpolieren. Ich hab dafür zwei Spalten, in einer stehen die Zeitpunkte (TimeRg) und in der anderen die Zinssätze (RateRg).
Nun würde ich so vorgehen:
If Time(i) Rate(i) = ?
ElseIf Time(i) >= Application.WorksheetFunction.Max(TimeRg) Then
Rate(i) = ?
Else:
[bereits fertiger Teil mit linearer Interpolation]
Nun weiß ich allerdings nicht wie ich den Zinssatz zu dem kleinsten bzw. größten Wert von TimeRg ermittele. Nur bei einer normalen Zinsstrukturkurve könnte ich einfach mit max/min arbeiten, um die Zinssätze zu ermitteln. Es soll allerdings auch für inverse Zinsstrukturkurven und nicht zeitlich sortierte Zeitabfolgen funktionieren. Als 2D-Matrix könnte ich es (vermutlich) auch, aber da ich den Großteil schon als zwei Ranges geschrieben habe, würde ich gern bei diesem Ansatz bleiben. :)
Ich schätze was ich dafür bräuchte ist eine Funktion, die mir die Position des Wertes von Application.WorksheetFunction.Min(TimeRg) in der Range gibt. Hätte ich diesen Wert könnte ich einfach RateRg.Cells(xx) benutzen. Könnt ihr mir eine solche Funktion nennen?
Danke

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Position in einer Range wiedergeben VBA
03.07.2016 00:22:13
Max
habe es bereits gelöst

AW: Position in einer Range wiedergeben VBA
03.07.2016 00:49:52
fcs
Hallo Max,
die entsprechende Funktion für die Suche nach der Position eines Wertes in einer Matrix ist Match (Tabellenfunktion VERGLEICH).
Du solltest nicht Time als Variablenname verwenden, dies eine VBA-Funktion ist.
Gruß
Franz
Sub aaTest()
Dim i As Long, xxxx As Long
Dim TimeRg As Range, RateRg As Range
Dim TimeMin, RateMin, TimeMax, RateMax, lngMin As Long, lngMax As Long
Dim wks As Worksheet
Dim varTime() As Date, varRate() As Double
'Start Anweisungen für Testwerte
Set wks = ActiveSheet
With wks
lngMax = .Cells(.Rows.Count, 1).End(xlUp).Row
Set TimeRg = .Range(.Cells(2, 1), .Cells(lngMax, 1))
Set RateRg = .Range(.Cells(2, 2), .Cells(lngMax, 2))
End With
xxxx = 100
ReDim varTime(1 To xxxx)
ReDim varRate(1 To xxxx)
'Ende Anweisungen für Testwerte
'Rate bei Min-Zeit
TimeMin = Application.WorksheetFunction.Min(TimeRg)
lngMin = Application.WorksheetFunction.Match(TimeMin, TimeRg, 0)
RateMin = RateRg.Cells(lngMin, 1)
'Rate bei Max-Zeit
TimeMax = Application.WorksheetFunction.Max(TimeRg)
lngMax = Application.WorksheetFunction.Match(TimeMax, TimeRg, 0)
RateMax = RateRg.Cells(lngMax, 1)
'Interpolationen - Test
For i = 1 To xxxx
varTime(i) = VBA.Rnd()
Select Case varTime(i)
Case Is = TimeMax
varRate(i) = 321 'hier Formel eintragen
Case Else:
'[bereits fertiger Teil mit linearer Interpolation]
varRate(i) = 333 'hier Formel eintragen
End Select
Next
End Sub

Anzeige
AW: Position in einer Range wiedergeben VBA
03.07.2016 03:40:31
Michael
Hi zusammen,
falls Match Treffer nicht wie erwartet findet, ist Runden hilfreich: nur mal im Hinterkopf behalten.
@Franz: gibt es einen besonderen Grund, weshalb Du rnd mit "VBA." schreibst?
Schöne Grüße,
Michael

316 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige