lineare interpolation von werten

Bild

Betrifft: lineare interpolation von werten
von: arthur
Geschrieben am: 11.03.2005 19:47:40
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
Bild

Betrifft: AW: lineare interpolation von werten
von: Björn B.
Geschrieben am: 13.03.2005 13:07:47
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
Bild

Betrifft: AW: lineare interpolation von werten
von: schubert
Geschrieben am: 13.03.2005 16:08:40
vielen dank !!!!!! funktioniert bestens.
hast mir eine große manuelle aufarbeitung von daten erspart :)
Bild

Betrifft: Danke für die Rückmeldung - o. T.
von: Björn B.
Geschrieben am: 13.03.2005 17:42:23

 Bild

Beiträge aus den Excel-Beispielen zum Thema "lineare interpolation von werten"