Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1164to1168
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

INDEX mit 3 Kriterien!

INDEX mit 3 Kriterien!
RoB
Hallo Leute!
Ich habe ein Problem mit der INDEX-Formel. Ich soll in der Frachtliste anhand der drei Kriterien Land, Zone und Gewicht (nach dieser Reihenfolge!) den jeweiligen Preis ermitteln. In der Datei erkennt man das besser:
https://www.herber.de/bbs/user/70617.xlt
Mein Ansatz steht auch drin, aber irgendwie komme ich damit nicht weit ^^...
Kann mir bitte jemand helfen?
Viele Grüße,
Rob
Nicht INDEX(), sondern BEREICH.VERSCHIEBEN()
16.07.2010 11:56:42
NoNet
Hallo Rob,
gib folgenden Funktion in D2 ein, bestätige sie mit Strg+Shift+ENTER und kopiere sie nach unten :
=BEREICH.VERSCHIEBEN(Tabelle1!$B$1:$B$21;MAX(WENN((Tabelle1!$A$6:$A$21=Tabelle2!A2)*(Tabelle1!$B$6:$B$21<=Tabelle2!C2);ZEILE($6:$21)))-1;Tabelle2!B2)
Gruß, NoNet
AW: Nicht INDEX(), sondern BEREICH.VERSCHIEBEN()
16.07.2010 12:06:12
RoB
Errrr, krass :P... Vielen Dank, NoNet!
Ja, es funktioniert bestens, aber glaubst Du, Du kannst mir kurz erklären, was in der Formel eigentlich gemacht wird und warum man strg+shift+enter drücken muss? Wäre extrem nett von Dir, da ich ungern eine Formel weitergeben möchte, die ich selber nicht verstehe.
Gruß,
RoB
Anzeige
AW: Nicht INDEX(), sondern BEREICH.VERSCHIEBEN()
16.07.2010 12:20:53
RoB
Sorry, das als "Frage noch offen" zu markieren ist wirklich dreist. Immerhin hast Du mir die Lösung schon geboten und ich habe quasi um eine kurze Excel-Nachhilfe gebeten - nicht der Sinn dieses Forums.
Mache mich schon selber schlau. Danke nochmal!
MATRIX-Funktion - Erklärungs-Versuch
16.07.2010 12:38:35
NoNet
Hallo Rob,
ich versuche mal, es zu erklären (obwohl das wesentlich schwieriger ist, als diese MATRIX-Funktion zu entwerfen !!)
=BEREICH.VERSCHIEBEN(Tabelle1!$B$1:$B$21;MAX(WENN((Tabelle1!$A$6:$A$21=Tabelle2!A2)*(Tabelle1!$B$6:$B$21<=Tabelle2!C2);ZEILE($6:$21))-1);Tabelle2!B2)

Es handelt sich hierbei um eine MATRIX-Funktion, d.h. jede EINZELNE Zelle des Bereiches Tabelle1!$A$6:$A$21 wird mit der Zelle Tabelle2!A2 verglichen und jede EINZELNE Zelle des Bereiches Tabelle1!$B$6:$B$21 wird mit Tabelle2!C2 verglichen.
Dadurch ergeben sich 16 einzelne WAHR/FALSCH-Werte, z.B. für den ersten Teil (Bedingung 1) :
Tabelle1!$A$6:$A$21=Tabelle2!A2
Tabelle1!$A$6=Tabelle2!A2 ergibt FALSCH
Tabelle1!$A$7=Tabelle2!A2 ergibt FALSCH
…
Tabelle1!$A$11=Tabelle2!A2 ergibt WAHR
...
Tabelle1!$A$21=Tabelle2!A2 ergibt FALSCH
Diese WAHR/FALSCH-Werte ergeben eine MATRIX (das bewirkt Strg+Shift+ENTER), also z.B. :
{FALSCH;FALSCH;FALSCH;FALSCH;WAHR;WAHR;WAHR;WAHR;FALSCH;FALSCH;FALSCH;FALSCH;FALSCH;FALSCH;FALSCH;FALSCH}
Das kannst Du einfach überprüfen, indem Du den Teil Tabelle1!$A$6:$A$21=Tabelle2!A2 in der Funktion markierst und dann Taste F9 drückst (bitte Eingabe danach mit ESC verlassen und NICHT mit ENTER bestätigen !!)
In der zweiten Bedingung (Tabelle1!$B$6:$B$21<=Tabelle2!C2) ergibt sich ebenso eine MATRIX :
{WAHR;WAHR;FALSCH;FALSCH;WAHR;WAHR;FALSCH;FALSCH;WAHR;WAHR;FALSCH;FALSCH;WAHR;WAHR;FALSCH;FALSCH}
Diese WAHR/FALSCH-Werte der beiden MATRIZEN (=Plural von MATRIX) werden jeweils miteinander multipliziert, das Ergebnis gibt wiederum eine MATRIX :
{0;0;0;0;1;1;0;0;0;0;0;0;0;0;0;0}
Für alle Werte 1 dieser MATRIX sind die beiden angegebenen Bedingungen also erfüllt, für die 0-Werte ist mind. eine Bedingung nicht erfüllt !
Für die erfüllten Bedingungen werden nun also die entsprechenden Zeilen ermittelt (daher ZEILE($6:$21)))), das sind also die Zeilen 10 und 11. Von diesen beiden Zeilen nehme ich die grössere (MAX), da 245 kg. ja auch größer als 200 ist und nicht nur größer als 100. Das Ergebnis ist also Zeile 11.
Der Wert ergibt sich also ausgehend von Zelle $B$1 um diese Zeilenanzahl (11 ) abzüglich 1 nach unten verschoben und um die Anzahl Spalten aus Tabelle2!B2 (Das ist die Zone).
Das alles klingt zunächst etwas kompliziert, ist aber alles nur einfache Logik und wenn man das schon häufiger gemacht hat ist es nicht viel schwieriger als 2 Zahlen im Kopf zu addieren…
Es lohnt sich auf jeden Fall, sich mit dieser Materie zu beschäftigen !!
Ein Lesetipp dazu : http://www.online-excel.de/excel/singsel.php?f=26 (und folgende !)
Viel Spaß damit, Gruß, NoNet
Anzeige
AW: MATRIX-Funktion - Erklärungs-Versuch
16.07.2010 13:25:46
RoB
Hey NoNet,
danke, dass du dir die zeit genommen hast, mir das zu erklären. eigentlich kann ich deinen ausführungen folgen, nur als ich dann versucht habe, die formel an die originaldatei anzupassen, spuckt er mir einen vollkommen anderen wert in einer anderen zeile und spalte aus.
in der beispieldatei habe ich die vorherige mit der spalten und zeilen anzahl der original datei gleichgesetzt und habe nun dasselbe problem. diesen teil mit ZEILE($11:$26)))-1;Tabelle2!B2 bildet das wesentliche problem, da ich es nicht ganz verstehe...
https://www.herber.de/bbs/user/70622.xlt
vielleicht kannst du nochmal bitte rüberschauen und mir sagen, was die änderungen für einen einfluss auf die formel haben. :S
Anzeige
Spezialtarife sind nicht immer POSITIV ;-)
16.07.2010 13:54:04
NoNet
Hallo Rob,
die Anpassung waar FAST richtig - aber eben dennoch FALSCH ;-)
Wo kommt denn plötzlich der SPEZIALTARIF her ?
Durch diese zusätzliche Spalte musst Du auch den Bereich entsprechend um 1 Spalte weiter nach rechts verschieben.
Den Ausgangsbereich Tabelle1!$C$1:$C$26 kann man übrigens auch kürzen, es genügt Tabelle1!$C$1 - das war allerdings bereits in meiner Funktion als überflüssiger Teil enthalten ;-)
=BEREICH.VERSCHIEBEN(Tabelle1!$C$1;MAX(WENN((Tabelle1!$B$11:$B$26=Tabelle2!A2)*(Tabelle1!$C$11:$C$26<=Tabelle2!C2);ZEILE($11:$26)))-1;Tabelle2!B2+1)
Gruß, NoNet
Anzeige
mit INDEX() wäre das nicht passiert ;-) ...
16.07.2010 15:07:02
neopa
Hallo NoNet,
... als erklärter Fan von INDEX() reizte mich natürlich gerade dieser Thread.
MIt INDEX() und VERGLEICH() kann man diese Art Aufgabe und vor allem dieser Datenstruktur auch ohne {} und einfacher lösen.
Dann steht aber in C8: "bis", so dass mE Deine Auswertungsformel sowieso noch etwas anders lauten müsste, denn so kannst Du keine Preise für Gewichte Hier meine Interpretation, wo die Formel auch noch einfach anpassbar wäre (falls meine Interpretation der Preisbildung unzutreffend war):
=WENN(ANZAHL2(A2:C2)=3;INDEX(Tabelle1!E:G;VERGLEICH(A2;Tabelle1!B:B;)+VERGLEICH(C2+99,99; Tabelle1!C$11:C$14)-1;B2);"") 

Gruß Werner
.. , - ...
oT: hat sich denn Olaf inzwischen gemeldet?
Anzeige
OT @neopa : Ja, Olaf hat sich per Mail gemeldet_oT
16.07.2010 15:17:29
NoNet
_oT
AW: Spezialtarife sind nicht immer POSITIV ;-)
16.07.2010 15:28:06
RoB
oh mann, ist das hart >_ ich näher mich wirklich langsam der lösung, bekomme es einfach nicht 100% hin. scheinbar verwirrt es die formel, wenn man in der Spalte $C$1 auch nullwerte hat. so ist es nämlich in meiner original datei (die ich dummerweise nicht hochladen kann...) wie kommt das mit den nullen und was kann ich da tun?
0-Werte kann man ausschließen ...
16.07.2010 15:46:59
neopa
Hallo RoB,
... z.B. mit WENN(C2=0;"";...)
in meiner Formel müsstest Du das nur noch integrieren:
Also so:
=WENN((ANZAHL2(A2:C2)=3)*(C2>0);INDEX(Tabelle1!E:G;VERGLEICH(A2;Tabelle1!B:B;)+VERGLEICH(C2+99,99; Tabelle1!C$11:C$14)-1;B2);"") 

Gruß Werner
.. , - ...
Anzeige

309 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige