nichita
Goto Top

Wertabfrage aus mehr dimensionaler Matrix

Hallo,

ich möchte einen Wert aus einer Matrix ablesen in Abhängigkeit von 3 Variablen.

Das erste Bild zeigt die Tabelle in der der Wert "Preis pro KG" aus der Matrix eingefügt werden soll.

4f8a87345efb35c9b6ef3c98fb26ea32

d.h. Ich möchte einen Wert in der Zelle "Preis pro KG"


Hier in Bild 2 sieht man die Matrix aus der der Wert "Preis pro KG" ausgelesen werden soll.

757f0944c6af7513fe54e19d4e04a8a2


1. Sendungsgewicht, PLZ und Land aus Bild 1 entscheiden über den Wert aus der Matrix in Bild 2.

z.B. Erste Zeile ist Sendungsgewicht 900 KG, PLZ = 5 und Land ist DE
d.h. er soll aus der Matrix den Wert: 7,000 in die Tabelle aus Bild 1 reinschreiben.

Wie lässt sich das mit einer Formel lösen ?

Danke schonmal

Content-Key: 249785

Url: https://administrator.de/contentid/249785

Printed on: April 23, 2024 at 07:04 o'clock

Member: colinardo
Solution colinardo Sep 21, 2014, updated at Oct 07, 2014 at 14:17:40 (UTC)
Goto Top
Hallo Nichita,
das lässt sich mit einer Matrix(Array)-Formel erledigen. Ich habe dir dazu mal ein Beispiel-Sheet erstellt:
search_value_in_matrix_249785.xlsx

4cb7107fe43eeedb8094f21bed2716ab

Die Formel verwendet die Funktionen Index() und Vergleich() in Kombination als Matrix-Formel.

BITTE BEACHTEN: Dies ist eine Matrix-Formel. Man muss die Formel mit STRG-SHIFT-ENTER abschließen anstatt nur mit einem "einfachen" Enter. Eine Matrixformel erkennt man in Excel daran das in der Formelzeile die Formel mit geschweiften Klammern eingefasst wird. Diese darf man jedoch nicht manuell eingeben.

back-to-topDie Formel zerlegt:
Die Funktion Index() liefert aus einer Matrix den jeweiligen Wert mit Hilfe von einer Zeilen- und Spaltenangabe als Nummer. Die Matrix ist im Beispiel die Tabelle mit unseren Quelldaten $A$17:$F$19.

=INDEX($A$17:$F$19; Zeilennummer; [Spaltennummer])

Die Zeilennummer ermitteln wir nun mit der Funktion Vergleich(). Mit dieser suchen wir nach einer 1, welche aber nur zurückgegeben wird wenn das zweite Argument ($A$17:$A$19=C2)*($B$17:$B$19=B2) als Ergebnis eine 1 liefert. Dieses Konstrukt funktioniert nur als Matrix-Formel und nur ergibt nur eine 1 wenn PLZ und LAND in der Zielmatrix übereinstimmen. Die Vergleich-Funktion liefert als Ergebnis die relative vertikale Position in der Matrix, also die passende Zeile.

=INDEX($A$17:$F$19;VERGLEICH(1;($A$17:$A$19=C2)*($B$17:$B$19=B2);0); [Spaltennummer])

Nun kommen wir zur Spalte. Dies machen wir ebenfalls mit der Funktion Vergleich(). Diesmal aber mit einer Liste von Werten: VERGLEICH(D2;{0;501;1001;2001})+2
Dies vergleicht nun das Gewicht unserer aktuellen Zeile mit einer Matrix von Werten die die Grenzen der jeweiligen Gewichtsklassen darstellen. Die Funktion fällt dabei immer auf den nächst niedrigeren Wert in der Matrix zurück und gibt dessen Position aus. Zu dieser Positionsangabe addiert man dann noch die Anzahl an Spalten die in der Matrix vor den Gewichtsklassen stehen.
Damit haben wir unsere gesuchte Spalte und die Formel ist komplett:

=INDEX($A$17:$F$19;VERGLEICH(1;($A$17:$A$19=C2)*($B$17:$B$19=B2);0);VERGLEICH(D2;{0;501;1001;2001})+2)

Hoffe das war soweit verständlich beschrieben face-smile

Grüße Uwe
Member: colinardo
colinardo Sep 23, 2014 updated at 20:01:39 (UTC)
Goto Top
Wenns das dann war, den Beitrag bitte noch auf gelöst setzen. Merci.