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.
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.
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
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.
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.
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 249785
Url: https://administrator.de/forum/wertabfrage-aus-mehr-dimensionaler-matrix-249785.html
Ausgedruckt am: 19.04.2025 um 02:04 Uhr
2 Kommentare
Neuester Kommentar
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
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
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.
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.
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:
Hoffe das war soweit verständlich beschrieben
Grüße Uwe
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
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.
Die 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
Grüße Uwe
Wenns das dann war, den Beitrag bitte noch auf gelöst setzen. Merci.