it-swarm.com.de

Was ist der einfachste Weg, um in einer x, y-Tabelle in Excel zu interpolieren und nachzuschlagen?

Ich möchte eine Suche und Interpolation basierend auf x, y-Daten für die folgende Tabelle durchführen. Ich möchte, dass die Gleichung so einfach wie möglich ist, um die Anzahl möglicher Fehler zu verringern. Die vollständige Tabelle umfasst ca. 50 Zeilen x 30 Spalten. Ich habe ungefähr 20 dieser Tische. Hier ist ein Auszug aus einem:

   A       B      C    D 
1        0.1    0.2   0.3 
2  2.4   450    300   50
3  2.3   500    375   52
4  2.1   550    475   55
5  1.8   600    600   60

Beispielsweise sollte die Gleichung den Wert für x = 2,27 und y = 0,15 finden

8
dassouki

Sie haben eine Reihe von Tabellen mit Indexwerten in der ersten Zeile und in der ersten Spalte jeder Tabelle und eine Reihe von Werten im Inneren der Tabelle, von denen jede bestimmten Zeilen- und Spaltenindexwerten zugeordnet ist.

Bei zwei Werten, die jeweils genau einem Zeilen- oder Spaltenindex entsprechen oder zwischen zwei Zeilenindexwerten oder zwei Spaltenindexwerten liegen können, möchten Sie eine lineare Interpolation der Werte in der Tabelle basierend auf den beiden angegebenen Werten durchführen Werte für die erste Zeile und erste Spalte.

Table for which interpolations will be calculated

Um die Interpolation für Eingabewerte durchzuführen, die zwischen den Indexwerten in der Tabelle liegen, wird Folgendes benötigt:

  • Die Zeilennummer des kleinsten vertikalen Indexwerts, der größer oder gleich dem vertikalen Eingabewert vnum ist. Da sich die Indexwerte in Spalte 1 der Tabelle in absteigender Reihenfolge befinden, können Sie dies mit den folgenden Methoden ermitteln:

    =MATCH(vnum,vrng,-1)

dabei ist vnum der Eingabewert und vrng der vertikale Bereich der Indizes in der ersten Spalte der Tabelle. Das dritte Argument -1 der FunktionMATCH gibt an, dass eine Suche mit "kleiner als" durchgeführt wird. Für diese Verwendung der Funktion MATCH muss der vertikale Indexbereich in absteigender Reihenfolge angegeben werden.

  • Der größte vertikale Indexwert, der kleiner (oder gleich) dem vertikalen Eingabewert (vnum) ist. Dies kann mit der Funktion MATCH nicht erreicht werden, da die vertikalen Indexwerte nicht in der für MATCH erforderlichen aufsteigenden Reihenfolge sortiert sind. Stattdessen wird die folgende Matrixformel verwendet.

    =MIN(IFERROR(1/(vnum>=vrng)*ROW(INDIRECT("1:"&ROWS(vrng))),ROWS(vrng)))

Das Schlüsselelement in dieser Formel ist vnum>=vrng, das ein boolesches Array erzeugt, in dem sich die erste TRUE an der Zeilenposition befindet, die den größten vertikalen Indexwert enthält, der kleiner als der Eingabewert ist. (Die Verwendung von "> =" erscheint möglicherweise nicht intuitiv. Dies ist erforderlich, da die Indizes in der Spalte absteigend sortiert sind.) Der Rest der Formel wandelt diese Zeilenposition in eine Zeilennummer um.

Diese beiden oberen und unteren Zeilennummern werden verwendet, um sowohl die Indexwerte zu berechnen, die den Eingabewert oben und unten einschließen, als auch die inneren Tabellenwerte, die diesen Indexwerten entsprechen.

Die entsprechenden Spaltennummern und Spaltenwerte für den horizontalen Indexbereich sind auf ähnliche Weise aufgebaut.

Die restlichen Schritte arbeiten mit der Arithmetik der Interpolation.

Remaining step to calculate interpolated value for input value pair

Bei diesen vielen Schritten scheint es möglicherweise unpraktisch, die interpolierten Beträge für mehrere Eingabewerte zu berechnen. Die Verwendung einer bidirektionalen Datentabelle ("Was-wäre-wenn") ist eigentlich ganz einfach.

Two-way data table

Das Einrichten dieser Berechnungen für mehrere Tabellen kann durch die Verwendung ihrer Ein-Formel-Version noch weiter vereinfacht werden. Zur Verwendung müssen die benannten Bereiche vnum, hnum, vrng, hrng, datarng, validvnum und validhnum eingerichtet werden. Die Tabellen müssen sich in separaten Blättern oder in separaten Arbeitsmappen befinden. In separaten Arbeitsblättern müssen die Namen für jedes Arbeitsblatt so festgelegt werden, dass sie den Arbeitsblattbereich haben.

Die Einzelschritt-Berechnungsformel wird dann in die obere linke Zelle der Datentabelle eingegeben. Diese Formel mit 2.100 (minus eins) Zeichen ist im herunterladbaren Arbeitsblatt enthalten.

Ein Arbeitsblatt mit diesen Berechnungen kann unter diesem Link heruntergeladen werden.

6
chuff

Tatsächlich haben Sie eine 3D-Tabelle - x und y sind unabhängige Variablen, und diejenige, die Sie finden müssen, ist z.

Ich kenne eine Lösung für 2-D-Tabelle, aber für 3-D sollte es ähnlich sein.

Wenn Sie also eine 2D-Tabelle haben, können Sie mithilfe der Excel-Funktion "Trendlinie" herausfinden, welche Formel am besten zu Ihren Daten passt. Mit dieser Formel können Sie y für jede x berechnen

  1. Erzeugen Sie dafür eine lineare Streuung (XY) (Einfügen => Streuung);
  2. Erstellen Sie eine polynomale oder gleitende durchschnittliche Trendlinie und aktivieren Sie "Gleichung im Diagramm anzeigen" (Rechtsklick auf Serie => Trendlinie hinzufügen).
  3. Kopieren Sie die Gleichung in die Zelle und ersetzen Sie x durch Ihren gewünschten x-Wert

Auf dem Screenshot unter A12: A16 enthält x, B12: B16 enthält y und C12 enthält eine Formel, die y für jede x berechnet.

Excel Interpolation

Was Ihren Fall betrifft (3D-Daten), kann Excel auch 3D-Diagramme erstellen, aber ich weiß nicht, ob es sich um 3D-Trends handelt.

3
alexkovelsky

Verwenden Sie die Index- und Übereinstimmungsfunktion von Excel in Kombination, um Ihr Ergebnis zu erzielen. Unter Verwendung der obigen Daten haben Sie genau in Excel platziert und die folgende Formel abgeleitet. Die Formel wird in Zelle D8 eingegeben.

=INDEX($B$3:$D$6,MATCH(E2,$A$3:$A$6,-1),MATCH(F2,$B$2:$D$2,-1))

enter image description here

1
roman_bull

Ich habe einen VBA-Code für die bilineare Interpolation geschrieben, den Sie hier finden: https://github.com/DanGolding/Linear-and-bilinear-interpolation-in-Excel

Der Vorteil dieser Methode besteht darin, dass es sich um eine einzelne Funktion handelt, mit der ein Wertegitter wie in diesem Bild dargestellt einfach interpoliert werden kann (beachten Sie, dass die Zellen entsprechend den Werten farbig sind, um den Effekt der Interpolation besser zu veranschaulichen):

enter image description here

1
Dan

Hier ist die Formel, nach der Sie suchen: Verwenden Sie bei zwei gegebenen Punkten (x1, y1) und (x2, y2) die Formel, um zwischen ihnen zu interpolieren:

y = (y2-y1)/(x2-x1) * (x-x1) + y1

dabei ist x die Eingabe und y die Ausgabe. Ausgehend von der folgenden Tabelle

Die Formel lautet: = WENN (ISERROR (MATCH (O3, R $ 4: R $ 10)), S $ 4, WENN (ISERROR (INDEX (R $ 4: R $ 10, MATCH (O $ 3, R $ 4: R $ 10) +1) ), S $ 10, (INDEX (R $ 4: S $ 10, MATCH (O3, R $ 4: R $ 10) +1,2) -INDEX (R $ 4: S $ 10, MATCH (O3, R $ 4: R $ 10), 2 ))/(INDEX (R $ 4: S $ 10, MATCH (O3, R $ 4: R $ 10) +1,1) -INDEX (R $ 4: S $ 10, MATCH (O3, R $ 4: R $ 10), 1)) * (O3-INDEX (R $ 4: S $ 10, MATCH (O3, R $ 4: R $ 10), 1)) + INDEX (R $ 4: S $ 10, MATCH (O3, R $ 4: R $ 10), 2)))

Die iferror-Funktionen behandeln die Endpunkte. Sie behalten den Wert am Endpunkt bei, anstatt ihn zu extrapolieren.

1
Tom

Es wird mit drei Funktionen gelöst; Vorhersage, Versatz und Übereinstimmung.

=FORECAST($B$9,OFFSET(B3:D3,0,MATCH($B$9,$B$2:$D$2,1)-1,1,2),OFFSET($B$2:$D$2,0,MATCH($B$9,$B$2:$D$2,1)-1,1,2))

=FORECAST(B10,OFFSET(E3:E6,MATCH(B10,A3:A6,-1)-1,0,2),OFFSET(A3:A6,MATCH(B10,A3:A6,-1)-1,0,2))

Excel spreadsheet details

0
Yasir Alharthi

Die beste Antwort auf dieses Problem finden Sie in diesem Video https://www.youtube.com/watch?v=LFUd5qF8nyE

Die endgültige Formel lautet

=FORECAST(C3,OFFSET(interpol_array,MATCH($C3,lookup_array,1)-1,0,2),OFFSET(lookup_array,MATCH($C3,lookup_array,1)-1,0,2))

Wobei "interpol_array" als die Spalte definiert ist, aus der Sie die Werte interpolieren möchten, und "lookup_array" die Spalte ist, in der Sie nach den Werten suchen.

Diese Antwort besagt auch dasselbe https://stackoverflow.com/questions/42877228/vlookup-and-interpolating

0
Rami Alloush