2017-10-26 3 views

Antwort

0

Man könnte so etwas wie diese versuchen, aber es muss abgerissen werden und über alle Zeilen und Spalten zu erhalten, die als Matrixformel mit CtrlShift-

=IFERROR(INDEX(A$2:A$6,SMALL(IF(ISNUMBER(MATCH($A$2:$A$6,$D$2:$D$6,0)),ROW($A$2:$A$6)-1),ROW()-1)),"") 

Hat eingegeben werden entsprechenGeben Sie

enter image description here

Ein anderer Ansatz wäre b e um eine Helper-Spalte zur Datenbank hinzuzufügen und danach zu filtern.

Der Betrieb der Formel ist wie folgt (von innersten Arbeits zu den äußersten)

MATCH($A$2:$A$6,$D$2:$D$6,0)) 

Spiel dauert in der Regel eine einzige Nachschlagewert Match (LOOKUPVALUE, Reichweite, Optionen), sondern auch mit einer Reihe von verwendet werden kann, Nachschlagewerte in welchem ​​Fall es ein Array gibt das Ergebnis jeder des Nachschlagewerte, in diesem Fall für jede Zelle in A2 enthält: A6, das, wenn in D2 nachgeschlagen: D6 gibt

1; #N/A; 4; #N/A; #N/A 

ISNUMBER(MATCH($A$2:$A$6,$D$2:$D$6,0)) 

Wir wollen nicht wissen, wo das Spiel in D2: D6 ist, ob es erfolgreich war oder nicht. ISNUMBER produziert

true: false; true; false; false 

IF(ISNUMBER(MATCH($A$2:$A$6,$D$2:$D$6,0)),ROW($A$2:$A$6)-1) 

Wir wollen die Zeilen in A2 finden: A6, wo die erfolgreichen Übereinstimmungen auftreten. Wenn der Test fehlschlägt, wird der Ausgang nur falsch sein, so dass Sie

2; false; 4; false ; false 

bekommen und subtrahieren, so dass Sie

1; false; 3; false; false 

SMALL(IF(ISNUMBER(MATCH($A$2:$A$6,$D$2:$D$6,0)),ROW($A$2:$A$6)-1),ROW()-1) 

Row() bezieht sich auf die Zeile der Zelle erhalten enthält die Formel (anfänglich F2), so erhalten Sie 2, dann Subtrahieren von 1 von dem Sie 1 erhalten. So wird SMALL Ihnen das kleinste Element des obigen Arrays geben: 1. Wenn die Formel in B3 heruntergezogen wird, wird es Ihnen die geben nächstes Nicht-falsch-Element im Array: 3.

Standard Verwendung von INDEX, um die n-te Zelle im Bereich A2: A6 zu geben. In F2 ist dies die erste Zelle mit 1.In F3 ist es die dritte Zelle, die 4 enthält. In G2 wird die Formel übergezogen, so dass sie für den Bereich B2: B6 gilt.


=IFERROR(INDEX(A$2:A$6,SMALL(IF(ISNUMBER(MATCH($A$2:$A$6,$D$2:$D$6,0)),ROW($A$2:$A$6)-1),ROW()-1)),"") 

Wenn der Index/Spiel schlägt fehl, da es keine weiteren Übereinstimmungen gibt, zeigt IFERROR eine leere Zelle.

Diese Formeln sehen kompliziert aus, aber sie sind aus Mustern aufgebaut, die ziemlich standardisiert sind und von der Gemeinschaft der normalen Excel-Benutzer erkannt werden.

Die Formel könnte durch Entfernen der Festcodierung verbessert werden -1, so dass es weniger anfällig für Insertionen/Deletionen

=IFERROR(INDEX(A$2:A$6,SMALL(IF(ISNUMBER(MATCH($A$2:$A$6,$D$2:$D$6,0)),ROW($A$2:$A$6)-ROW(A$1)),ROW()-ROW(A$1))),"") 
+0

Sie so freundlich sein würden und die Formel erklären? –

+0

Sorry wird für ein bisschen weg von Computer sein, aber wird später erweitern –

+0

Vielen Dank! Wird Ihre Lösung anwenden und auf Ihre Erklärung warten. Mein Vergnügen! –

Verwandte Themen