Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
940to944
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
940to944
940to944
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

y-Werte über lineare Funktion berechnen

y-Werte über lineare Funktion berechnen
16.01.2008 09:05:23
Silva
Hallo zusammen,
nachdem mir in diesem Forum so schnell und super gut weitergeholfen wurde, würde ich gerne noch ein Frage stellen. Hoffe auch hier könnt ihr mir helfen :-)
Folgende Herausforderung:
Die Tabelle ist so aufgebaut:
x-Werte 2.53; 3.00; 4.00; 5.00; 5.06; 6.00; 7.00; 7.59
y-Werte 7.91 ; ? ; ? ; ? ; 9.88; ? ; ? ; 11.86
Steigung m bestimmen um y-Wert zu berechen
Faktor b bestimmen um y-Wert zu berechen
Ziel ist es, die Steigung für x=3; x=4;x=5 etc zu berechnen, oder besser für alle x-Werte deren y-Werte=? sind. Annahme für die Steigungsberechnung ist hierbei ein linearer Zusammenhang (f(x)=m*x+b).
das ist der Code den ich bisher geschrieben habe. Er prüft ob eine bestimmt Zelle (y-Wert) leer ist und wenn ja, in die entsprechende Zelle in Zeile "Steigung m" die Formel für die Steigung reinzuschreiben.

Sub Wert_berechnen_m ()
Dim iCol As Integer
iCol = 3
Cells(12, 3).Activate
Do
If IsEmpty(ActiveSheet.Cells(ActiveCell.Row, iCol)) Then
ActiveSheet.Cells(ActiveCell.Row + 1, iCol).FormulaR1C1 = "=(R[-1]C[1]-R[-1]C[-1])/( _
R[-2]C[1]-R[-2]C[-1])"
End If
iCol = iCol + 1
Loop While Not iCol = 50
End Sub


Problem hierbei ist, dass diese Formel nur funktioniert, wenn nur 1 y-Wert "fehlt", da die Formel nicht variabel ist!!! Formel: m = yWert2 - yWert1 / xWert2 - xWert1
Ich möchte die Formel gerne so variabel machen, dass sie sich als y-Wert immer die Werte nimmt, wo ein Wert drinsteht.
Bsp.:
bisher rechnet er für x=3 --> m= ? - 7.91 / 4-2.53
er soll aber rechnen für x=3 -->m= 9.88 - 7.91 / 5.06 - 2.53
versteht ihr mein Anliegen? Freue mich auf Inputs von euch und danke allen Helfern vorab!!
Gruss, Silva

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: y-Werte über lineare Funktion berechnen
16.01.2008 11:08:00
ingoG
Hallo Silvia,
um den Funktionswert zwischen 2 bekannten Punkten zu berechnen, die mit einer geraden verbunden sind mußt du folgendermassen vorgehen:
bekannte Punkte: (x1,y1) und (x2,y2)
gesuchter Wert: y zum Punkt (x,y)
=> y(x)=y1+(x-x1)*( y2-y1)/(x2-x1)
Du mußt also die bekannte Randpunkte des Intevalls finden, in dem dein x-Wert liegt und dann die obige formel anwenden....
Gruß Ingo
Ps eine Rückmeldung wäre nett...

AW: y-Werte über lineare Funktion berechnen
16.01.2008 11:29:58
Silva
Salut Ingo,
ja, du hast vollkommen Recht mit der Formel, nur hast du es wesentlich besser / verständlicher ausgedrückt, was mein Anliegen ist!
Die Formel kenn ich und weiss sie auch anzuwenden ABER mein Proble ist genau das
"wie finde ich die Randpunkte meines Intervalls automatisch (VBA)?" wenn ich z.B. folgende Zahlenreihe habe
x-Werte 2.53; 3.00; 4.00; 5.00; 5.06; 6.00; 7.00; 7.59
y-Werte 7.91; ?; ?; ?; 9.88; ?; ?; 11.86
Es wird vom Makro geprüft ob schon ein y-Wert vorhanden ist und wenn Nein wird die Formel anwendet, um den Wert zu bestimmen. ALLERDINGS
Die Formel muss jetzt so variabel sein, dass sie die Randpunkte findet und sie in die Formel einträgt!!!, da zwischen den 2 Randpunkten beliebig viele Punkte dazwischen liegen können (normal 2-4 Werte)
Hast du hierfür auch eine Idee, wie man das mit VBA lösen kann? oder jeder andere auch? ;-)
Gruss, Silva

Anzeige
AW: y-Werte über lineare Funktion berechnen
16.01.2008 12:37:44
Rudi
Hallo,
versuchs mal so:
Bereich markieren und laufen lassen:

Sub tt()
Dim x1, x2, y1, y2, m As Double, b As Double
Dim i As Integer, iFirst As Integer, c As Range
iFirst = 1
With Selection
For i = 1 To .Columns.Count
If .Cells(2, i)  "" Then
If y1 = "" Then
y1 = .Cells(2, i)
x1 = .Cells(1, i)
Else
y2 = .Cells(2, i)
x2 = .Cells(1, i)
End If
End If
If y1  "" And y2  "" Then
m = (y2 - y1) / (x2 - x1)
b = y1 - m * x1
For Each c In .Range(Cells(2, iFirst), Cells(2, i))
c.Value = c.Offset(-1, 0) * m + b
Next
iFirst = i
y1 = y2
x1 = x2
y2 = ""
x2 = ""
End If
Next i
For Each c In .Range(Cells(2, iFirst), Cells(2, i - 1))
c.Value = c.Offset(-1, 0) * m + b
Next
End With
End Sub


Gruß
Rudi
Eine Kuh macht Muh, viele Kühe machen Mühe

Anzeige
AW: y-Werte über lineare Funktion berechnen
16.01.2008 12:54:00
ingoG
Hallo Silva,
sorry, ich habe wohl nicht zuende gelesen...
versuchs mal so:

Sub Wert_berechnen_m()
Dim iCol As Integer, iColNext As Integer, iRow As Integer
iCol = 3
iRow = 12
Do
If IsEmpty(ActiveSheet.Cells(iRow, iCol)) Then
For iColNext = iCol + 1 To 50
If Not IsEmpty(ActiveSheet.Cells(iRow, iColNext)) Then Exit For
Next iColNext
ActiveSheet.Cells(iRow, iCol).FormulaR1C1 = "=RC[-1]+(R[-1]C-R[-1]C[-1])*(RC[" &  _
iColNext - iCol & "]-RC[-1])/(R[-1]C[" & iColNext - iCol & "]-R[-1]C[-1])"
End If
iCol = iCol + 1
Loop While Not iCol = 50 And Not IsEmpty(ActiveSheet.Cells(iRow - 1, iCol))
End Sub


Gruß Ingo
PS eine Rückmeldung wäre nett...

Anzeige
AW: y-Werte über lineare Funktion berechnen
16.01.2008 15:28:00
Silva
Hallo zusammen,
es funktioniert tipptopp und zwar mit beiden Varianten! Ihr wart echt super ihr 2, tausend Dank
an euch!!! :-)
Wenn ihr Zeit und Muse habt, wäre es extrem hilfreich damit ich den Code das nächste Mal selbst schreiben kann, wenn ihr, vorallem Rudi, eine Kurzbeschreibung zu eurem Code zur Verfügung stellen könntet.
und bei dir, Ingo, würde mich die Systematik hinter diesem Teil interessieren?! -steig da nicht durch
Do
If IsEmpty(ActiveSheet.Cells(iRow, iCol)) Then
For iColNext = iCol + 1 To 50
If Not IsEmpty(ActiveSheet.Cells(iRow, iColNext)) Then Exit For
Next iColNext
Im Endeffekt hats funktioniert und das ist die Hauptsache, also keinen Stress
Gruss, Silva

Anzeige
AW: y-Werte über lineare Funktion berechnen
16.01.2008 17:39:00
ingoG
Hallo Silva,
zur Erläuterung:
in Deiner Do schleife durchläufst Du alle spalten von 3-50.
wenn in dieser Spalte die Zelle in Zeile 12 leer ist, suchst Du einfach die Spaltennummer, in der der nächste wert steht:
If IsEmpty(ActiveSheet.Cells(iRow, iCol)) Then 'wenn betrachtete Zelle Leer dann:
For iColNext = iCol + 1 To 50 'iColNext auf icol+1 und jeweils bis 50 hochzählen
If Not IsEmpty(ActiveSheet.Cells(iRow, iColNext)) Then Exit For 'wenn in zei12 ein wert:nicht weitersuchen
Next iColNext 'Ende der For-schleife
wie gesagt man läuft in Zeile iRow von der ersten Zeile hinter icol (icol+1) bis max Zeile 50 und sobald in der betrachteten spalte ein wert steht beendet man das Hochzählen (Exit For) und IcolNext behält so den aktuellen wert.
Ich hoffe, das erhellt den Sachverhalt.
Gruß Ingo

Anzeige
AW: y-Werte über lineare Funktion berechnen
17.01.2008 07:35:00
Silva
Guten Morgen Ingo,
jetzt ist der Knoten geplatzt, danke schön!!!
Dir und allen anderen einen schönen Tag,
Gruss, Silva

9 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige