Kann mir jemand erklären, wie diese VLOOKUP-MATCH-INDEX-Formel funktioniert?

0
(VLOOKUP($C10,Trans_CIQ!$A$8:$AZ$95,MATCH(D$9,Trans_CIQ!$A$8:$AZ$8,INDEX(Trans_CIQ!$A$886:$AZ$886,1,0)),0)*100000)

Diese Formel funktioniert aus irgendeinem Grund, aber ich verstehe nicht wie. Ich habe versucht, die Funktionen zu trennen, verstehe das aber immer noch nicht.

Vlookup (Nachschlagewert (Firmenname), Tabellenarray (wo nachgeschlagen werden soll), col_index_num (in welcher Spalte gesucht werden soll), [Bereichssuche] (immer 0)) gibt den Wert an, der den Bedingungen entspricht

Match (lookup_value (CapIQ-Diagrammtitel), lookup_array (wo suchen), [Match-Typ] (genau)) gibt die Artikelnummer in einer Liste an

Index (Array (die Tabelle), row_num, [Spaltennummer]) gibt den Wert in der Zelle zurück

Dmitriy
quelle
Sie könnten wahrscheinlich verwenden =(VLOOKUP($C10,Trans_CIQ!$A$8:$AZ$95,Trans_CIQ!$A$886,0)*100000)
PeterH
@PeterH nicht und pflegen Sie die Funktionalität der Formel. INDEX(Trans_CIQ!$A$886:$AZ$886,1,0) ist eigentlich ein eindimensionales Array von 52 Werten, um die Übereinstimmung zu suchen.
Scott Craner
@Scott, wo es als Zeile 1 & amp; Spalte 0, ist das nicht immer dieselbe Zelle $ A $ 886?
PeterH
Yup hat das zweite Kriterium übersprungen. Es sollte nur den INDEX-TEIL entfernen, aber den Rest des SPIELS durch -1,0,1 @PeterH ersetzen
Scott Craner
Und nein bei der Verwendung 0 In INDEX wird die gesamte Zeile oder Spalte @PeterH zurückgegeben
Scott Craner

Antworten:

1

INDEX(Trans_CIQ!$A$886:$AZ$886,1,0)

Da ist das dritte Kriterium 0 Tatsächlich wird ein Array der gesamten ersten Zeile des angegebenen Bereichs zurückgegeben. Das 1 sagt der Formel, dass die erste Zeile gewünscht wird.

Da der Bereich jedoch nur eine Zeile umfasst, wird dem INDEX nur Rauschen hinzugefügt und kann entfernt werden.

Trans_CIQ!$A$886:$AZ$886

gibt das gleiche Array zurück.

MATCH(D$9,Trans_CIQ!$A$8:$AZ$8,INDEX(Trans_CIQ!$A$886:$AZ$886,1,0))

Sucht den Wert in D9 in dem vom Index zurückgegebenen Array und gibt die relative Spaltennummer zurück. Diese an VLOOKUP zurückgegebene Spaltennummer gibt an, welche Spalte als Antwort zurückgegeben werden soll.

Wie oben erwähnt, wird der INDEX nicht benötigt. Da er auch im dritten Kriterium enthalten ist, sollte er einen Fehler zurückgeben und nicht funktionieren. Ersetzen Sie ihn durch -1, 0 oder 1.

MATCH(D$9,Trans_CIQ!$A$8:$AZ$8,0)

Nehmen wir also an, dass MATCH Spalte 5 zurückgibt, wenn der Wert in D9 in der Liste in enthalten ist Trans_CIQ!$A$8:$AZ$8 Es würde zurückkehren 5 zum dritten Kriterium des VLOOKUP.

VLOOKUP($C10,Trans_CIQ!$A$8:$AZ$95,5,0)

Dieser findet dann C10 im Trans_CIQ!$A$8:$A$95 Und gibt den Wert aus der 5. Spalte oder in diesem Fall aus Spalte E der Zeile zurück, in der sich der Wert befindet.

Danach die *100000 multipliziert die Rendite mit 100000

Scott Craner
quelle
Vielen Dank, Scott! Eine weitere Folgefrage: Warum befindet sich der INDEX / Array im match_type-Feld? Ich dachte, das sollte nur -1,0 oder 1 sein.
Dmitriy
Dies ist nicht der Fall, sondern der zweite Punkt, an dem der zu durchsuchende Bereich liegt. Das dritte Kriterium wird leer gelassen, was in Ordnung ist, da es optional ist.
Scott Craner
MATCH (lookup_value, lookup_array, match_type) ist also für den Lookup-Wert D $ 9, für den Lookup_array Trans_CIQ! $ A $ 8: $ AZ $ 8 und für den Match_type Trans_CIQ! $ A $ 886: $ AZ $ 886 von meinem Verstehen, oder ist das falsch?
Dmitriy
Yup hat das verpasst, nicht sicher, warum es da drin ist.
Scott Craner
Wenn Ihre Daten sortiert sind und Sie eine relative Übereinstimmung oder eine genaue Übereinstimmung wünschen, ersetzen Sie einfach den gesamten INDEX durch -1,0,1. Ich werde aktualisieren
Scott Craner