Index-Vergleich mit 2 Kriterien:
Syntax für CH/DE:
=INDEX(such_bereich;VERGLEICH(1;INDEX((kriterium1=kriterien_bereich1)*(kriterium2=kriterien_bereich2);0;1);0))
Syntax für EN:
=INDEX(such_bereich,VERGLEICH(1,INDEX((kriterium1=kriterien_bereich1)*(kriterium2=kriterien_bereich2),0,1),0))
Beispiel für CH/DE:
=INDEX(A:A;VERGLEICH(1;INDEX((E1=B:B)*(F2=C:C);0;1);0))
Beispiel für EN:
=INDEX(A:A,VERGLEICH(1,INDEX((E1=B:B)*(F2=C:C),0,1),0))
Index-Vergleich mit mehr als 2 Kriterien:
Syntax für CH/DE:
=INDEX(such_bereich;VERGLEICH(1;INDEX((kriterium1=kriterien_bereich1)*(kriterium2=kriterien_bereich2)*(kriterium3=kriterien_bereich3);0;1);0))
Syntax für EN:
=INDEX(such_bereich,VERGLEICH(1,INDEX((kriterium1=kriterien_bereich1)*(kriterium2=kriterien_bereich2)*(kriterium3=kriterien_bereich3),0,1),0))
Beispiel für CH/DE:
=INDEX(A:A;VERGLEICH(1;INDEX((F1=B:B)*(F2=C:C)*(F3=D:D);0;1);0))
Beispiel für EN:
=INDEX(A:A,VERGLEICH(1,INDEX((F1=B:B)*(F2=C:C)*(F3=D:D),0,1),0))
Excel hat viele verschiedene Formeln, mehr als eine einzelne Person je verwenden kann. Formeln wie SVERWEIS und die INDEX-, VERGLEICH-Formeln werden am häufigsten verwendet. Eine normale INDEX-VERGLEICH-Formel oder der SVERWEIS sucht einen Wert anhand eines Kriteriums in einer Liste. Aber was ist wenn nach mehr als einem Kriterium gesucht werden soll?
Index-Vergleich mit 2 Kriterien
Die Formel kann weiterhin verwendet werden. Es sind nur ein paar Anpassungen erforderlich.
Wie unten im Screenshot zu sehen ist, haben wir zwei Kriterien, um nach dem Umsatz zu suchen.
Die Formelsyntax lautet:
=INDEX(such_bereich;VERGLEICH(1;INDEX((kriterium1=kriterien_bereich1)*(kriterium2=kriterien_bereich2);0;1);0))
Erläuterung:
Gerne erläutern wir die Formel anhand dieses Beispiels. Wir haben eine Liste mit Namen, Städte und einem Umsatz. Uns interessiert, wieviel Umsatz hat Frau Meier aus Frauenfeld gemacht.
Da es mehrere „Meier“ gibt und mehrere Personen aus Frauenfeld, kann nicht einfach der SVERWEIS oder die „normale“ INDEX/VERGLEICH-Formel verwendet werden. Wir schreiben die Formel so:
Wir verwenden hier die Indexformel, die innerhalb der Vergleich-Formel verwendet wird. Wenn wir innerhalb der Vergleichs-Formel die Index-Formel auswerten, ist Folgendes ersichtlich. WAHR bedeutet, dass das Kriterium gefunden wurde.
Wenn nun der erste Teil der Formel angesehen wird, dann ist ersichtlich, dass in der Liste die ersten drei Namen Treffer sind. Im zweiten Teil der Formel ist ersichtlich, dass der zweite und der fünfte Eintrag ein Treffer ist.
Indem wir beide Arrays multiplizieren, ergibt es nur beim zweiten Eintrag einen übereinstimmenden Treffer.
Dies bedeutet beim zweiten Eintrag ist der gesuchte Wert. Wenn Sie dieses Prinzip verstanden haben, können Sie die Formel nun beliebig erweitern.
Hier ist die Beispiel-Datei zum downloaden: Beispiel mehrere Kriterien Index Vergleich
Index-Vergleich mit mehr als 2 Kriterien
Die Formel kann auch mehr als 2 Kriterien haben. Wir müssen lediglich eine weitere Array in den Index einfügen:
=INDEX(such_bereich;VERGLEICH(1;INDEX((kriterium1=kriterien_bereich1)*(kriterium2=kriterien_bereich2)*(kriterium3=kriterien_bereich3);0;1);0))
Weitere Informationen über Excel-Dropdowns finden Sie hier und Informationen über Web-Apps finden Sie hier.
Benötigen Sie einen VBA Programmierer?
Wir als exact construct programmieren mit einem Team von rd. 20 Mitarbeitern seit über 10 Jahren Excel-Tools. Wir sind ein Nischenanbieter der spezialisiert auf Makros/VBA-Codes ist. Daneben unterstützen wir auch als 3rd Level Support die IT-Abteilungen rund um Probleme bei MS Office (Excel, Word, PowerPoint, etc.).
Haben Sie ein Excel-Problem? Benötigen Sie einen Makro-Programmierer? Rufen Sie uns unverbindlich an +41 52 511 05 25 oder kontaktieren Sie uns via Kontaktformular
Hallo Adrian,
kann es sein, dass in der Formel ein Fehler ist?
Bei mir funktioniert sie jedenfalls nicht, auch wenn ich Dein Beispiel exakt nachbaue und die Formel abschreibe.
Beste Grüße
Joachim
Hallo Joachim
Ich habe im Beitrag eine Excel-Datei mit dem Beispiel eingefügt. Schau dir die Formel da mal an.
Viele Grüsse
Adrian
Herzlichen Dank Adrian,
jetzt hab ich die Formel verstanden und es funktioniert, auch bei mir ;-)
Schöne Grüße
Joachim
Mega! Vielen Dank!
An Index und Vergleich hatte ich in meinem Problem schon gedacht, nur den zweiten Index hatte ich in meiner ursprünglichen Lösung nicht drin. Der Fehlte! :D
;-)
Hallo Adrian,
danke für die Formeln. Kannst du bitte noch erklären, was die 0 und die 1 in der inneren INDEX-Formel bedeuten?
So wie ich es verstanden habe, bildet das erste Argument der INDEX Formel den Bereich, was bei dir das Array {0;1;0;0;0;0} ist.
Würde INDEX also mit dem zweiten Argument auf 0 die ganze Zeile und das dritte Argument auf 1 die erste Spalte wiedergeben?
Heißt das dann, dass mit den geschweiften Klammern, alle Einträge der Matrix in der gleichen Zeile und in der gleichen Spalte sind?
Dann könnte man, das dritte Argument ja eigentlich auf 0 lassen oder?
Außerdem habe ich probiert, „Müller“ bei Frauenfeld auf „Meier“ zu ändern und der Wert wird nicht mitgezählt. Die Formel scheint also nur den ersten Eintrag zu zählen, der beide Kriterien hat. Wie geht man damit um, wenn mehrere Einträge mit den beiden Kriterien vorhanden sind und man z.B. die Summe aus den Einträgen möchte?
Ich hoffe, dass ich deine Fragen richtig verstanden habe ;-)
Die Array {0;1;0;0;0;0} bedeutet, bei welchen Zeilen ein Treffer vorhanden ist. Im konkreten Fall gibt es eine Übereinstimmung in der zweiten Zeile (beide Kriterien in der zweiten Zeile sind korrekt. Wenn in der Dritten Zeile ebenfalls Meier & Frauenfeld stehen würde, dann wäre das Ergebnis {0;1;1;0;0;0}.
Bezüglich deiner zweiten Frage: Ja, wie beim Sverweis auch, wird immer nur der erste Wert zurück gegeben. Wenn du mehrere Einträge suchst und dann diese Aufsummieren möchtest, dann wäre die Formel SUMMEWENNS die richtige Formel.
DANKE! DANKE! DANKE!!!!!
Immer gerne. Viele Grüsse Adrian
Hallo, erstmal vielen Dank für die Erklärung.
Ich verstehe leider eine Sache noch nicht: Warum gibst du in der Index-Formel im Vergleich nach dem Suchkriterium 0 für die Zeile und 1 für die Spalte ein?
Eine weitere Frage: Wie wäre die Lösung, wenn innerhalb einer Spalte eines von zwei alternativen Suchkriterien erfüllt sein sollte? In deinem Beispiel also entweder Müller oder Meier.
Vielen DAnk!
Antwort zur ersten Frage:
Der Parameter des Zeilenwerts definiert, wie viele Zeilen nach unten gehen (in diesem Fall nach rechts). Mit Null stellen wir sicher, dass er sich nicht bewegt. Der Wert 1 stellt nur sicher, dass er in der 1. Spalte steht. Da wir in diesem Fall nur ein eindimensionales Array-Ergebnis haben, hat es nur eine Spalte. Wir können den Parameter 1 auch einfach nicht in den Spaltenparameter eingeben, da es sich um ein optionales Argument handelt. Das Ergebnis wird sich dadurch nicht ändern.
Antwort zur zweiten Frage:
So funktioniert es:
=INDEX(C3:C8;VERGLEICH(1;INDEX((("Meier"=A3:A8)+("Müller"=A3:A8))*("Frauenfeld"=B3:B8);0;1);0))
Hallo, vielen Dank mal für den guten Beitrag.
Folgende Situation. Unten stehende FOrmel funktioniert, da ich jedoch zwei Argumente Abfrage (mit dem & Zeichen) ergibt sich ein Problem, wenn das erste Argument eine genaue Übereinstimmung benötigt und das zweite Argument größer gleich dem angegebenen Wert sein kann.
Also für
„[@d]“ muss genau übereinstimmen und
„([@B]+10)“ muss größer gleich sein.
Ich frage bei Wert b2 die Dicke eines Materials und bei B die Breite eines Materials ab. Die Dicke muss stimmen, die Breite kann auch größer sein.
Im Beispiel sollte er finden dicke 3,5 und 590 Breite und er findet mir aber leider schon vorher das mit 3,6x590er Blech
=INDEX(Tabelle3[NR1];VERGLEICH([@d]&([@B]+10);Tabelle3[Dicke1]&Tabelle3[Breite1];0))
Mit dieser Formel sollte es klappen:
=INDEX(Table1[Name];VERGLEICH(1;INDEX((F2=Table1[Dicke])*(G2>=Table1[Breite]);0;1);0))
Wichtig, da es sich um eine Matrix Formel handelt, drücke anschliessend Ctrl + Shift + Enter, damit die {} eingefügt werden.
Hallo, super ja so funktioniert es. Man muss nur folgendes noch beachten. Die Table1 aus deiner Formel muss so sortiert sein, dass zuerst die Dicke absteigend sortiert wird und danach die Breite aufsteigend. Dann funktioniert es. Besten Dank!!!
Freut mich zu hören, dass es geklappt hat.
Hallo
Kann die Formel so angepasst werden, dass auch der Suchbereich dynamisch ist und die Spalte statt fix C3:C8 wie in der Beispieldatei „Beispiel-mehrere-Kriterien-Index-Vergleich“ nach einem bestimmten Wert ausgewählt wird? Statt C3:C8 wäre das Suchkriterium „Umsatz“ in der Zeile A2:D2 zu suchen.
Vielen Dank für die Hilfe!
Hallo Liliane
Mit der INDIREKT- und ADRESSE-Formel können wir dynamisch die Spalte „Umsatz“ aus A2:D2 erhalten.
Du kannst C3:C8 durch diese Formel ersetzen
INDIREKT(ADRESSE(3;VERGLEICH("Umsatz";A2:C2;0))&":"&ADRESSE(8;VERGLEICH("Umsatz";A2:C2;0)))
In der ersten Adresse geben wir die erste Zeile an, die 3. Dann finden wir die Spalte Umsatz mit einem VERGLEICH, dann setzen wir „:“ in die Mitte und suchen erneut die Spalte mit VERGLEICH und definieren die letzte Zeile, die 8. Um die Formel zum Ausführen zu bringen, müssen wir noch die INDIREKT-Formel schreiben.
Die vollständige Formel lautet:
=INDEX(INDIREKT(ADRESSE(3;VERGLEICH("Umsatz";A2:C2;0))&":"&ADRESSE(8;VERGLEICH("Umsatz";A2:C2;0)));VERGLEICH(1;INDEX(("Meier"=A3:A8)*("Frauenfeld"=B3:B8);0;1);0))
Viele Grüsse
Adrian
Hallo Adrian
Vielen herzlichen Dank für die rasche Antwort und deine Top-Hilfe :-)
Viele Grüsse
Liliane
Hallo Ich versuche mittels dieser Funktion Daten aus einer flachen Datentabelle abzurufen ca. 300.000 Zeilen (2Kriterien) . Die Funktion bringt regelmäßig meine Excelinstanz zum Abstürzen. Auch die CPU-Belastung ist enorm (8 Threads und trotzdem mehrere Minuten Laufzeit) Gibt es eine Alternative?
Hallo Matthias
Versuch doch mal PowerQuery. Hier haben wir diverse Artikel betreffend PowerQuery: https://www.excel-hilfe.ch/archives/ Mit PowerQuery sollte es eigentlich problemlos möglich sein.
Viele Grüsse
Adrina
Mega! Ich danke dir.
Hallo, bin gerade auf den Beitrag gestossen und dachte mir das Ihr eventuell helfen könnten.
Ich möchte aus 2 Spalten und 2 Zeilen eine einzige Zahl aus einer Matrix zurückgeben.
z.B.
A1 B1 C1 D1 E1 F1
Name Stadt Umsatz Umsatz Umsatz Umsatz
2023 2023 2024 2024
April Oktober April Oktober
Datensatz 1
Datensatz 2
Datensatz xx
Es soll nun der Umsatz von Meier / Dortmund / 2023 / Oktober ausgegeben werden.
Ist das eventuell auch mit INDEX/Vergleich möglich oder mit einer vergleichbar einfachen Methode?
Hallo Alex
Mit der Index/Vergleich-Formel (wie im Blog beschrieben) kannst du nach den Kriterien suchen und den Wert zurückgeben lassen.
Die Alternative ist, du verwendest einfach eine Pivot-Tabelle. Für Benutzer die nicht so geübt sind mit Formeln, ist die Pivot-Tabelle die simplere Lösung.
Gruss Adrian
Vielen Dank für die schnelle Antwort. Für Pivot müsste ich die Tabelle umbauen und da diese zwei mal im Jahr im selben Format aktualisiert wird ist es nicht die beste Methode.
Ich habe es mit INDEX(Tabelle2!E8:BD150;Vergleich(1;Index(Tabelle1!R16=Tabelle2!B7:B150)*(Tabelle2!R17=Tabelle2!C7:C150)*(Tabelle1!R19=Tabelle2!Tabelle1!E6:BD6)*(Tabelle1!S19=Tabelle2!E5:BD5);0;1);0) versucht und bekomme zu wenig Argumente zurück. Ich werde es mal weiter versuchen. Nochmals meinen Dank für die Antwort.
Ich habe mir deine Formel kurz angesehen. Du hast leider diverse Fehler drin. Hier eine funktionierende Formel: =INDEX(Tabelle2!E7:E150;VERGLEICH(1;INDEX((Tabelle1!R16=Tabelle2!B8:B150)*(Tabelle2!R17=Tabelle2!C7:C150)*(Tabelle1!R19=Tabelle2!E7:E150);0;1);0))
1. Du musst schauen, dass der Range immer gleich ist entweder du startest von Zeile 7 oder 8.
2. Du darfst nur eine Spalte auswählen E5:BD5 geht nicht, weil dann nicht klar ist in welcher Spalte gesucht werden muss.
Da ich in 2 Spalten und in 2 Zeilen suche wird das ganze wohl schwieriger für mich.
Vielen Dank noch mal für Deine Bemühungen.
;-) Docht geht…..Liess nochmals den Artikel oben genau durch