Excel - VLoolup mit Übereinstimmung - ist dies eine optimale Lösung?

418
David

Ich versuche, die Redundanz der Berechnung des gleichen Index so oft zu vermeiden, wie Datensätze vorhanden sind. Sollte ich den Index mit MATCH in einer versteckten Zelle über meiner Tabelle vorberechnen ?

Es ist auch erwähnenswert, dass meine Tische zwar nicht massiv sein werden, sie jedoch auch nicht klein sein werden. Wahrscheinlich gibt es ungefähr 6 Tabellen mit jeweils einer oder zwei VLOOKUPS (vollständige Spalte) mit einer Gesamtzahl von Datensätzen in den Hunderten.

Genauer gesagt, ich werde eine Reihe von Tabellen in Excel erstellen und die Goodies einer richtigen relationalen Datenbank mit der Funktion VLOOKUP nachahmen, um einen Wert einer verwandten Tabelle zu erhalten, aber ich werde MATCH verwenden Funktion, um den Index der Spalte, die ich möchte, anhand der Kopfzeile abzurufen. Das Folgende ist die eigentliche Formel, die ich verwenden werde:

= VLOOKUP ([@ ForeignKey], RelatedTable, MATCH (RelatedTable [[# Header], [ItemName]], RelatedTable [#Headers], 0), FALSE) 
'Aufgeschlüsselt nach Parametern VLOOKUP ( Nachschlagewert: = [@ForeignKey] Table_array: = RelatedTable Col_index_num: = 'Rückgabe von MATCH SPIEL( Lookup_value: = RelatedTable [[# Header], [ItemName]] Lookup_array: = RelatedTable [#Header] Match_type: = 0 'Genaues Match Range_lookup: = FALSE 'Genaue Übereinstimmung 

BEARBEITEN:

Die erste Tabelle ist die mit dem Primärschlüssel. Die letzten beiden sind eines der beiden Beispiele, auf die ich mich beziehe.

Table_Products ╔════╦════════╦═══════════════╦═══════════╗ ║ ║ A ║ B ║ C ╠════╬════════╬═══════════════╬═══════════╣ ║ 1 ║ ItemID ║ ItemName ║ ItemPrice ╠════╬════════╬═══════════════╬═══════════╣ ║ 2 ║ 1 ║ Stylus ║ 25,00 $ ╠════╬════════╬═══════════════╬═══════════╣ ║ 3 ║ 2 ║ Mech-Tastatur ║ $ 120,00 ╠════╬════════╬═══════════════╬═══════════╣ ║ 4 ║ 3 ║ Monitor ║ $ 750,00 ╚════╩════════╩═══════════════╩═══════════╝  Table_Transactions  AUCH WIE DIESES ╔════╦════════╦════════╦═════╦════════════════════ ═══╗ ║ ║ A ║ B ║ C ║ D ╠════╬════════╬════════╬═════╬════════════════════ ═══╣ ║ 1 ║ CustID ║ ItemID ║ Qty ║ ItemName ╠════╬════════╬════════╬═════╬════════════════════ ═══╣ ║ 2 ║ 101 ║ 3 ║ 1 ║ VLOOKUP (,, Match (,,),) ╠════╬════════╬════════╬═════╬════════════════════ ═══╣ ║ 3 ║ 102 ║ 3 ║ 2 ║ ... ║ ╠════╬════════╬════════╬═════╬════════════════════ ═══╣ ║ 4 ║ 103 ║ 3 ║ 1 ║ ... ║ ╠════╬════════╬════════╬═════╬════════════════════ ═══╣ ║ 5 ║ 104 ║ 2 ║ 3 ║ ... ║ ╠════╬════════╬════════╬═════╬════════════════════ ═══╣ ║ 6 ║ 105 ║ 1 ║ 8 ║ ... ║ ╠════╬════════╬════════╬═════╬════════════════════ ═══╣ ║ 7 ║ 106 ║ 2 ║ 2 ║ ... ║ ╠════╬════════╬════════╬═════╬════════════════════ ═══╣ ║ 8 ║ 107 ║ 2 ║ 1 ║ ... ║ ╠════╬════════╬════════╬═════╬════════════════════ ═══╣ ║ 9 ║ 108 ║ 2 ║ 2 ║ ... ║ ╠════╬════════╬════════╬═════╬════════════════════ ═══╣ ║ 10 ║ 109 ║ 1 ║ 4 ║ ... ║ ╠════╬════════╬════════╬═════╬════════════════════ ═══╣ ║ 11 ║ 110 ║ 2 ║ 16 ║ ... ║ ╚════╩════════╩════════╩═════╩════════════════════ ═══╝  ODER WIE DIESES (D1-Zelle ist NICHT Teil der Tabelle)  ╔════╦════════╦════════╦═════╦═════════════════╗ ║ ║ A ║ B ║ C ║ D ╠════╬════════╬════════╬═════╬═════════════════╣ ║ 1 ║ ║ ║ Match (,,) ║ ╠════╬════════╬════════╬═════╬═════════════════╣ ║ 2 ║ CustID ║ ItemID ║ Qty ║ ItemName ╠════╬════════╬════════╬═════╬═════════════════╣ ║ 3 ║ 101 ║ 3 ║ 1 ║ VLOOKUP (,, D $ 1,) ╠════╬════════╬════════╬═════╬═════════════════╣ ║ 4 ║ 102 ║ 3 ║ 2 ║ ... ║ ╠════╬════════╬════════╬═════╬═════════════════╣ ║ 5 ║ 103 ║ 3 ║ 1 ║ ... ║ ╠════╬════════╬════════╬═════╬═════════════════╣ ║ 6 ║ 104 ║ 2 ║ 3 ║ ... ║ ╠════╬════════╬════════╬═════╬═════════════════╣ ║ 7 ║ 105 ║ 1 ║ 8 ║ ... ║ ╠════╬════════╬════════╬═════╬═════════════════╣ ║ 8 ║ 106 ║ 2 ║ 2 ║ ... ║ ╠════╬════════╬════════╬═════╬═════════════════╣ ║ 9 ║ 107 ║ 2 ║ 1 ║ ... ║ ╠════╬════════╬════════╬═════╬═════════════════╣ ║ 10 ║ 108 ║ 2 ║ 2 ║ ... ║ ╠════╬════════╬════════╬═════╬═════════════════╣ ║ 11 ║ 109 ║ 1 ║ 4 ║ ... ║ ╠════╬════════╬════════╬═════╬═════════════════╣ ║ 12 ║ 110 ║ 2 ║ 16 ║ ... ║ ╚════╩════════╩════════╩═════╩═════════════════╝  
1
Nicht sicher, was Sie erreichen wollen. Warum würden Sie nicht Index / Match vs. Vlookup / Match durchführen? user218076 vor 5 Jahren 0
Ich weiß nicht, ob es nicht üblich ist, einen Index außerhalb der Tabelle selbst zu haben, wenn die Tabelle völlig in sich geschlossen ist. David vor 5 Jahren 0
Könnten Sie bitte einige Beispieldaten zusammen mit der Ausgabe veröffentlichen, hilft uns das Problem zu lösen. Scheint, du versuchst Vlookup (,,, Match (,,,,)) zu schreiben? Rajesh S vor 5 Jahren 0
@Rajesh S Entschuldigung, es hat eine Weile gedauert, um zu antworten. Nun gibt es ein Beispiel mit den beiden Formaten, über die ich spreche. Ich frage auch aus der Sicht eines Excel-Benutzers ohne fachlichen oder formellen Hintergrund. Ich möchte grundsätzlich wissen, ob das letztere Beispiel formal nicht akzeptabel ist. David vor 5 Jahren 0
Normalerweise verwende ich eine Zelle in einer verborgenen Zeile, um die Spaltennummer zu speichern, die mit VLOOKUP verwendet werden soll. Ich muss zugeben, ich weiß nicht, ob es notwendig ist. Wenn Excel sieht, dass dieselbe MATCH-Funktion viele Male verwendet wird, ruft es möglicherweise die Funktion einmal auf und speichert das Ergebnis, das für alle anderen Aufrufe verwendet werden soll. Blackwood vor 5 Jahren 0
Ja, es ist möglich, den Artikelnamen aus der Produkttabelle zu ziehen, indem die ID zwischen Produkt- und Transaktionstabelle abgeglichen wird. Rajesh S vor 5 Jahren 0
Sie können diese Formel in die D2-Zelle der Transaktionstabelle schreiben. - = Fehler (Vlookup (B2, A2: C4,3, false), "") und ausfüllen. Sie müssen den Namen der Tabelle und der Spalten nicht wie oben angegeben zuweisen. Wenn Sie nur den Bereich benennen, ist dies auch der Fall. Wenn sich die Produkttabelle in einem anderen Datenblatt befindet, stellen Sie dem Blattnamen den Namen A2: C4 voran. Rajesh S vor 5 Jahren 0

1 Antwort auf die Frage

1
user218076

Ich würde in D2 schreiben. =index(Table_Products'$B:$B,(match($B2,Table_Products'$A:$A,0)) Sie können auch eine 2-Wege-Übereinstimmung durchführen, wenn Sie ändern möchten, welche Spalte zurückgegeben werden soll, anstatt die Elementnamenspalte (Spalte B) hart zu codieren. Ich kann die Antwort ändern, wenn Sie das brauchen.

Ich verwende dies täglich auf Tabellen mit Tausenden von Suchvorgängen an mehrteiligen Tabellen und bemerke keine Leistungsprobleme. Im Allgemeinen ist Index / Match besser als Vlookup, da vlookup den gesamten Bereich verarbeiten muss.