Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1188to1192
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
Inhaltsverzeichnis

Polygonzug interpolieren

Polygonzug interpolieren
Günther
Hallo, ich brauche dringend Hilfe!
Ich habe einen Polygonzug, der durch x und y Koordinaten definiert wird. (Die Anzahl der x und y Werte sei variabel)
Bsp.:
P1 (x=1/ y=5); P2(x=2,2 / y=7,4); P3(x=3.5/ y=9,12) usw....
jetzt möchte ich zu einem beliebigen x_vorhanden den zugehörigen y-Wert interpoliert haben.
Händisch: kein Problem und auch mit vorhandenen Excelfunktionen hab ich es hinbekommen. Allerdings will ich das ganze als Prozedur schreiben, weil ich nicht immer meine Excel-sheets so aufblasen will.
Ich dachte mir ich mache eine Prozedur ungefähr wie diese

Public Function pginterpol(x_vorh, Matrix)
Matrix = Selected
'Der zu x_vorh nächst größere x-Wert
xOG = "=formula(min(if Matrix >= xges, Matrix))"
'Der zu x_vorh nächst kleinere x-Wert
xUG = "=formula(max(if Matrix 

Blöd nur, dass die definierte Matrix eigentlich einer Range angehört (z.Bsp Range("B5:C123")) und dass die Variablen yOG, yUG usw......von der Funktion Formula scheinbar keine Zahlen sind. (Also wenn ich beispielsweise schreibe Range("D4") = xUG....steht in der Arbeitsmappe "falsch"....
Günther

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Polygonzug interpolieren
28.11.2010 10:25:52
Christian
Hallo Günther,
davon ausgehend dass deine X und Y-Werte in Spalte 1 und 2 des Ranges stehen und die X-Werte aufsteigend sortiert sind.
Ein Ansatz:
Option Explicit
Public Function udfInterpol(dblX As Double, rngMtrx As Range)
Dim i&, dblY#, dblLX#, dblUX#, dblLY#, dblUY#
With rngMtrx
If dblX  .Cells(.Rows.Count, 1).Value Then
udfInterpol = "#NV"
Exit Function
End If
For i = 1 To .Rows.Count
If .Cells(i, 1).Value > dblX Then
dblLX = .Cells(i - 1, 1).Value
dblUX = .Cells(i, 1).Value
dblLY = .Cells(i - 1, 2).Value
dblUY = .Cells(i, 2).Value
dblY = dblLY + (dblUY - dblLY) / (dblUX - dblLX) * (dblX - dblLX)
Exit For
End If
Next
End With
udfInterpol = dblY
End Function

Gruß Christian
Anzeige
AW: Polygonzug interpolieren
28.11.2010 11:12:21
Günther
Hallo Christian,
Recht herzlichen Dank! Das ist genial!
Auf so eine elegante Lösung wäre ich nicht gekommen.
Was bedeutet Option Eplicit?
Als was sind die Variablen in der Zeile "Dim i&, dblY#, dblLX#, dblUX#, dblLY#, dblUY#" definiert?
Kann ich diese Prozedur als Add-in ins Excel integrieren, um die Files nicht immer als*.xlsm speichern zu müssen?
Lg Günther
AW: Polygonzug interpolieren
28.11.2010 11:27:11
Reinhard
Hallo Günther,
& = Datentyp Long
# = Datentyp Double
Ich fand keine Liste dazu in F1.
Option Explicit wird in der Hilfe erläutert. Binde es über Extras---Optionen "variablendaklaration erforderlich " ein, dann steht es in neuen Mappen schon immer an der richtigen Stelle.
Gruß
Reinhard.
Anzeige
Option Explicit und Typkennzeichen
28.11.2010 11:37:44
Christian
Hallo,
"Option Explicit" erzwingt die Deklaration von Variablen. Hilft ungemein bei der Fehlersuche und beim Debuggen. Das sollte man grundsätzlich in jedes Modul (einmal in die oberste Zeile) schreiben bzw. im VBA-Editor voreinstellen unter Extras-Optionen.
"&" - Long, "#" - Double. Das sind Typkennzeichen für Schreibfaule - näheres siehe VBA Hilfe.
Klar geht das auch als Addin. Dann würde ich aber auch die relevanten Spalten für X und Y-Werte als Variablen rausziehen. Auf anderen Rechnern läuft's dann halt nur, wenn dort auch das AddIn installiert ist.
Gruß
Christian
Anzeige
AW: Option Explicit und Typkennzeichen
28.11.2010 12:25:41
Günther
Ach so, damit ich auch bestimmen kann von welcher Spalte ich mit dem Bezugswert ausgehe...(ob ich von x einen y-Wert interpolieren will oder umgekehrt)
Ich habe noch eine Frage:" Warum funktioniert das Makro nicht bei negativen Zahlen?"
AW: Option Explicit und Typkennzeichen
28.11.2010 12:28:17
Günther
Mein..Fehler...Die negative Zahlenfolge muss wieder mit der kleinsten negativen beginnen und mit der größten enden!
AW: Option Explicit und Typkennzeichen
28.11.2010 12:39:00
Christian
damit ich auch bestimmen kann von welcher Spalte ich mit dem Bezugswert ausgehe
ja, und könnte ja auch sein, dass die X in Spalte 1 und die Y in Spalte 5 stehen.
Christian
AW: Option Explicit und Typkennzeichen
28.11.2010 16:38:31
Günther
Ich danke Euch nochmals vielmals für die rasche und kompetente Unterstützung!
Günther
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige