AW: Trendberechnung
24.08.2009 08:29:53
Herby
Hallo Judith,
das Wochenende ist schon wieder vorbei und nun kanns wieder los gehen !
Es gibt m.E. keine Formel die bei den y-Werten die Zelle leer läßt und trotzdem
bei der Trendberechnung diese Werte interpoliert und damit auch insgesamt
im Ergebnis berücksichtigt.
Das Beispiel, aus meiner Antwort berechnet die Lücken mit der Excelfunktion TREND,
dh. diese Punkte werden linear ermittelt, unabhänig davon, welche Form die gesamte
Kurve hat (z.B. linear=dann stimmts oder aber logarithmisch, potenziell, exponentiell
bzw. ein anderer Kurvenverlauf=dann stimmts nicht mehr so genau).
Um einen linearen Kurvenverlauf zu berechnen, bei dessen y-Werten Lücken enthalten sind,
habe ich eine benutzerdefinierte Funktion (=ein Makro, das genauso aufgebaut ist wie eine Funktion)
gefunden, die du bei linearen Zusammenhang verwenden kannst:
An dieser Stelle möchte ich Franz (fcs) für die Arbeit danken !!!
Function LIP(xVector As Range, yVector As Range, xValue As Double)
Dim Dimension As Long, MinDim As Long, MaxDim As Long
Dim I_oben As Long, I_unten As Long, I As Long
Dimension = xVector.Cells.Count
On Error GoTo Fehler
'1. X-Y-Wertepaar bestimmen, das verschieden ist von Leerstring
For I = 1 To Dimension
If xVector(I) "" And yVector(I) "" Then MinDim = I: Exit For
Next
'letztes X-Y-Wertepaar bestimmen, das verschieden ist von Leerstring
For I = Dimension To 1 Step -1
If xVector(I) "" And yVector(I) "" Then MaxDim = I: Exit For
Next
If xValue xVector.Cells(MaxDim).Value Then
'Extrapolation der Werte
If xValue "" And yVector(I) "" Then Exit For
Next
m = (yVector.Cells(I) - yVector.Cells(MinDim)) / (xVector.Cells(I) - xVector.Cells( _
MinDim))
n = yVector.Cells(I) - m * xVector.Cells(I)
Else
'Vorletztes X-Y-Wertepaar mit Werten verschieden von Leerstring
For I = MaxDim - 1 To MinDim Step -1
If xVector(I) "" And yVector(I) "" Then Exit For
Next
m = (yVector.Cells(MaxDim) - yVector.Cells(I)) / (xVector.Cells(MaxDim) - xVector. _
Cells(I))
n = yVector.Cells(MaxDim) - m * xVector.Cells(MaxDim)
End If
LIP = m * xValue + n
Else
'Interpolation der Werte
'X-Y-Wertepaar mit X-Wert >= gesuchten X-Wert
For I = MinDim + 1 To MaxDim
If xValue "" Then I_oben = I: Exit For
Next I
'Vorheriges X-Y-Wertepaar mit Werten verschieden von Leerstring
For I = I_oben - 1 To MinDim Step -1 '###### Korrketur in dieser Zeile ####
If xVector(I) "" And yVector(I) "" Then I_unten = I: Exit For
Next
LIP = yVector.Cells(I_unten).Value _
+ (xValue - xVector.Cells(I_unten).Value) / _
(xVector.Cells(I_oben).Value - xVector.Cells(I_unten).Value) _
* (yVector.Cells(I_oben).Value - yVector.Cells(I_unten).Value)
End If
Exit Function
Fehler:
LIP = "Interpolationsfehler"
End Function
Falls bei deinen Daten kein linearer Trend auszumachen ist, dann gibt es die Möglichkeit,
z.B. eine Interpolation z.B. mittels kubischen Splines durchzuführen (Wikipedia oder Google).
Umfangreichere statistische Auswertungen werden über AddIns angeboten z.B. habe
ich gerade XlXtrFun ausprobiert.
eine schöne Woche und
viele Grüße
Herby