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

lineare interpolation von werten

Forumthread: lineare interpolation von werten

lineare interpolation von werten
11.03.2005 19:47:40
werten
habe hier im forum einen beitrag gefunden der eine lineare interpolation zwischen zwei werten einer spalte durchführt. leider binhalten meine spalten mehrere werte die interpoliert werden müssen, z.b.:
a1 2
a2
a3
a4 5
a5
a6
a7 10
..
..
würde gerne zwischen a1 und a4 bzw. a4 und a7 interpolieren. die spalte ist natürlich länger. hier das skript aus diesem forum welches die daten in einer spalte, wenn sie nur zwei werte hat interpoliert.

Sub interpolieren_senkr()
Dim betr(100), ziel$
Dim z%, r%, s%, t%, asp%
sp = 1
Do While Cells(1, sp) <> ""
sp = sp + 1
Loop
For s = 1 To sp - 1
ziel = Chr(s + 64) & 65536
z = Range(ziel).End(xlUp).Row
For r = 2 To z
wert1 = Cells(1, s)
If Cells(r, s) = "" Then asp = asp + 1
If Cells(r, s) <> "" Then wert2 = Cells(r, s)
Next r
diff = wert2 - wert1
intp = diff / (asp + 1)
For t = 2 To asp + 1
wert1 = wert1 + intp
Cells(t, s) = wert1
Next t
asp = 0
Next s
End Sub

wie kann ich es ändern damit es zwischen zwei markierten werten interpoliert?
wenn es eine lösung gibt die automatisch funktioniert also ohne markierung wäre ich natürlich dankbar :)
gruß & dank
arthur
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: lineare interpolation von werten
13.03.2005 13:07:47
werten
Hallo Arthur,
versuch's mal hiermit:

Sub interpol()
Spalte = ActiveCell.Column
Ende_Bereich = Cells(65536, Spalte).End(xlUp).Row
Do
Do
Anfang_Bereich = Cells(Ende_Bereich, Spalte).End(xlUp).Row
If Not IsEmpty(Cells(Anfang_Bereich + 1, Spalte)) Or IsEmpty(Cells(Anfang_Bereich, Spalte)) Then
Ende_Bereich = Anfang_Bereich
If Ende_Bereich = 1 Then Exit Do
End If
Loop Until IsEmpty(Cells(Anfang_Bereich + 1, Spalte))
Differenz = Cells(Ende_Bereich, Spalte) - Cells(Anfang_Bereich, Spalte)
Teiler = Ende_Bereich - Anfang_Bereich
For Zeile = Anfang_Bereich + 1 To Ende_Bereich - 1
Cells(Zeile, Spalte) = Cells((Zeile - 1), Spalte) + Differenz / Teiler
Next Zeile
Loop Until Anfang_Bereich = 1
End Sub

Das Makro interpoliert die Spalte, in der die aktive Zelle ist.
Gruß
Björn
Anzeige
AW: lineare interpolation von werten
13.03.2005 16:08:40
werten
vielen dank !!!!!! funktioniert bestens.
hast mir eine große manuelle aufarbeitung von daten erspart :)
Danke für die Rückmeldung - o. T.
13.03.2005 17:42:23
Björn
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige