Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
644to648
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
644to648
644to648
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

DoSchleife-Wenn, dann in nächste Zelle und nochmal

DoSchleife-Wenn, dann in nächste Zelle und nochmal
29.07.2005 18:03:53
thomas
Hallo liebe Forumsmitglieder,
ich muss mich nun mit VBA beschäftigen und habe folgendes Problem. ICh möchte fehlende Werte Interpolieren. In Spalte A stehen die x-Werte und in Spalte B die zugehörigen Funktionswerte. In Spalte C stehen die x Werte für welche zwischen den jeweiligen x-Werten aus A die Funktionswerte Interpoliert werden sollen. Die Formel ist ganz einfach.f(interpoliert)=f(x1)+(f(x2)-f(x1))/(x2-x1)*(x-x1) In Spalte D soll erstmal (f(x2)-F(x1))/(x2-x1) rein(Also Hier:(31,46-31,60)/(481-9)(=(B3-B2)/(A3-A2))
Nun sollen in Spalte E die Interpolierten Werte sthen und zwar für die x-Werte aus C.( Für x = 12 sieht das so aus:=D2*(C2-A2)+B2 bzw.=$D$2*(C2-$A$2)+$B$2, nun kann ich zwar die Zellen ziehen bis C6 und habe auch für den ersten Abschnitt die Werte, aber nun soll ein VBA Programm selbsständig die resrlichen Werte ausrechnen. d.h. (B4-B3)/(A4-A3) und dafür die Stützstellen aus Spalte C. ICh kann dem Programm nicht beibringen, das wenn es die leere Zelle erreicht um eins weiterspringt und die ganze Sache für die nächsten Werte macht. Die tabelle ist riesig, deswegen sollte das mit VBA gehen, und ich habe 40 Stück davon.:-)
x f(x) x(Stütz) f(x2)-F(x2)/x2-x1 f(Interpol)
9 31,60 12 -0,00028813 31,59913559
481 31,46 102 0,000692112 31,57320339
874 31,74 295 31,51759322
407 31,48532203
467 31,4680339
697
700
704
732
759
836
858
Ich hoffe Ihr konntet mir folgen.
Danke schonmal

https://www.herber.de/bbs/user/25134.xls

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: DoSchleife-Wenn, dann in nächste Zelle und nochmal
29.07.2005 19:10:19
Ralf
Hallo Thomas,
versuchs mal damit....

Sub Interpol()
Dim ilZeile%, sStart, zStart%, z%
sStart = 4
zStart = 2
ilZeile = ActiveCell.SpecialCells(xlLastCell).Row
On Error Resume Next
Do Until z - 1 = ilZeile
If Range("C" & zStart + z) = "" Then GoTo Sprung
'Spalte D
Cells(zStart + z, sStart) = (Cells(zStart + z + 1, sStart - 2) - Cells(zStart + z, sStart - 2)) _
/ (Cells(zStart + z + 1, sStart - 3) - Cells(zStart + z, sStart - 3))
'Spalte E
Cells(zStart + z, sStart + 1) = _
Range("D2") * (Cells(zStart + z, sStart - 2) - Range("A2")) + Range("B2")
Sprung:
z = z + 1
Loop
End Sub

Ciao, Ralf
Anzeige
AW: DoSchleife-Wenn, dann in nächste Zelle und noc
29.07.2005 21:09:48
thomas
Hallo Ralf,
danke erstmal. Ich probiere es, hoffentlich klappt alles. Sonst frag ich nochmal.;-)
Tschüß Thomas
AW: DoSchleife-Wenn, dann in nächste Zelle und noc
29.07.2005 23:17:46
Thomas
Hallo,
also ich habe mal eine komplette Tabelle "halbautomatisch berechnet" Spalte D ist bei beiden(Mit VBa und ohne) richtig.Aber in VBA muss noch eine Schleife rein. Im Anhang ist ein Excel File wo man die "halbautomatische" Version sieht. Die Abfrage If Range("C" & zStart + z) = "" Then GoTo Sprung kann Bleiben, nur soll dann ausserdem noch Range("D2") zu Range("D3"),Range("A2") zu Range("A3") und Range("B2") zu Range("B3") werden. Ist man wieder beim nächsten Stützstellen "Teilstück angelangt soll Range("D3") zu Range("D4"),Range("A3") zu Range("A4") und Range("B3") zu Range("B4")werden usw. Also die If Abfrage ist die gleiche, also zum gleichen Zeitpunkt soll das passieren, aber dann sollen halt auch die Range"Zellen" eins hoch. Ich hoffe Ihr versteht mich.
Ich freue mich über Hilfe
Danke und Tschüß Thomas

Sub Interpol()
Dim ilZeile%, sStart, zStart%, z%, n%
sStart = 4
zStart = 2
ilZeile = ActiveCell.SpecialCells(xlLastCell).Row
On Error Resume Next
Do Until z - 1 = ilZeile
If Range("C" & zStart + z) = "" Then GoTo Sprung
'Spalte D
Cells(zStart + z, sStart) = (Cells(zStart + z + 1, sStart - 2) - Cells(zStart + z, sStart - 2)) _
/ (Cells(zStart + z + 1, sStart - 3) - Cells(zStart + z, sStart - 3))
'Spalte E
Cells(zStart + z, sStart + 1) = _
Range("D2") * (Cells(zStart + z, sStart - 1) - Range("A2")) + Range("B2")
Sprung:
z = z + 1
Loop
End Sub

Hier ist die Tabelle
https://www.herber.de/bbs/user/25136.xls
Anzeige
AW: DoSchleife-Wenn, dann in nächste Zelle und noc
29.07.2005 23:31:29
Ralf
Hallo Thomas,
hier die Änderung:

Sub Interpol()
Dim ilZeile%, sStart%, zStart%, z%, iZn%
sStart = 4
zStart = 2
iZn = 2
ilZeile = ActiveCell.SpecialCells(xlLastCell).Row
On Error Resume Next
Do Until z - 1 = ilZeile
If Range("C" & zStart + z) = "" Then
iZn = iZn + 1
GoTo Sprung
End If
'Spalte D
Cells(zStart + z, sStart) = (Cells(zStart + z + 1, sStart - 2) - Cells(zStart + z, sStart - 2)) _
/ (Cells(zStart + z + 1, sStart - 3) - Cells(zStart + z, sStart - 3))
'Spalte E
Cells(zStart + z, sStart + 1) = _
Range("D" & iZn) * (Cells(zStart + z, sStart - 2) - Range("A" & iZn)) + Range("B" & iZn)
Sprung:
z = z + 1
Loop
End Sub

Ciao, Ralf
Anzeige
AW: DoSchleife-Wenn, dann in nächste Zelle und noc
29.07.2005 23:42:31
Thomas
Danke, das ist echt Wahnsinn.
Erstens, dass Du noch wach bist und zweitens dass das so schnell ging und auch noch klappt.
Ich hoffe ich werde auch mal so gut. Machst Du das Beruflich?
Also vielen Dank und ein schönes Wochenende
Tschüß Thomas
AW: DoSchleife-Wenn, dann in nächste Zelle und noc
30.07.2005 00:06:39
Ralf
Hallo Thomas,
freut mich, dass es Dich freut! Irgendwann wirst auch Du soweit sein. Ganz sicher!
Klar ich mache das beruflich. Und wenn Du einen schönen, dicken Auftrag hast, nur her damit. Ansonsten bleibt mir nur Hartz IV...
Dir auch ein schönes Wochenende!
Ciao, Ralf
info@vb-anton.de

314 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige