wake-up-neo.com

vlookup mit mehreren spalten

Ich habe die folgende Formel in meiner B: B-Spalte

=VLOOKUP(A1;'mySheet'!$A:$B;2;FALSE)

Es gibt die in mySheet gefundenen Werte in B: B aus! B: B wobei A: A = mySheet! A: A ist. Es funktioniert gut. Nun möchte ich auch die dritte Kolumne bekommen. Es funktioniert, wenn ich die gesamte C: C-Spalte mit der folgenden Formel füge:

=VLOOKUP(A1;'mySheet'!$A:$C;3;FALSE)

Ich arbeite jedoch mit mehr als 100.000 Zeilen und etwa 40 Spalten. Ich möchte nicht 100k * 40 * VLOOKUP machen, ich möchte es nur 100k machen und muss das nicht mit allen Spalten multiplizieren. Gibt es eine Möglichkeit (mit Array-Formeln), das VLOOKUP einmal pro Zeile auszuführen, um alle Spalten zu erhalten, die ich brauche?


Datenbeispiel

ID|Name
-------
 1|AB
 2|CB
 3|DF
 4|EF

ID|Column 1|Column 2
--------------------
 1|somedata|whatever1
 4|somedate|whatever2
 3|somedaty|whatever3

Ich hätte gern:

ID|Name|Column 1|Column 2
-------------------------
 1|AB  |somedata|whatever1
 2|CB  |        |
 3|DF  |somedaty|whatever2
 4|EF  |somedate|whatever3
6
dnLL

INDEX arbeitet schneller als VLOOKUP, ich würde es empfehlen. Dies reduziert die Belastung, die viele Lookups auf Ihr System ausüben würden.

Suchen Sie zuerst mit MATCH die Zeile mit den benötigten Informationen in einer Hilfssäule:

=MATCH(A1,'mySheet'!$A:$A,0)

Dann einen INDEX mit dieser Nummer, den Sie ziehen und alle Ihre Spalten mit füllen können:

=INDEX('mySheet'!B:B,$B1)

Ihre Ausgabe würde der folgenden ähneln:

ID|Name|Match |Column 1 |Column 2
-------------------------
 1|AB  |Match1|IndexCol1|IndexCol2
 2|CD  |Match2|IndexCol1|IndexCol2
 3|EF  |Match3|IndexCol1|IndexCol2

Ebenfalls! Ich würde empfehlen, diese Bereiche so zu setzen, dass sie die Daten tatsächlich abdecken, anstatt auf die gesamte Spalte zu verweisen, um zusätzliche Geschwindigkeitsgewinne zu erzielen, z.

=INDEX('mySheet'!B1:B100000,$B1)
3
Aaron Contreras

Ich habe mehr über Ihr Problem nachgedacht, und wenn Sie mit den Daten, die Sie suchen, ein Problem haben, habe ich einen weiteren Vorschlag, den Sie versuchen könnten.

Fügen Sie in 'mysheet', wo die Rohdaten aufbewahrt werden, eine neue Spalte hinzu, die jede Spalte in einer Zelle zusammenfasst, mit einer Art eindeutigen Trenner, der nicht in Ihren Daten enthalten ist:

=B1&"+"&C1&"+"&D1&"+"&E1 etc...

Dann können Sie anstelle von 40 eine VLOOKUP oder INDEX/MATCH für jede Zeile ausführen.

Sobald Sie es in Ihrem neuen Arbeitsblatt haben, können Sie die Ergebnisse wieder aufteilen.


Spalten ohne Formeln

Kopieren Sie die Ergebnisse der Suchformeln als Werte in die nächste Spalte.

Wählen Sie diese Spalte aus und wählen Sie auf der Registerkarte Data in Ihrem Menüband Text in Spalten aus. 

Lassen Sie es auf Delimited , drücken Sie Next . Deaktivieren Sie Tab , Check Other und geben Sie Ihr Delimeter ein (+ in meinem Beispiel).

Klicken Sie auf Fertig stellen .


Teilen mit Formeln

Verwenden Sie =FIND(), um die einzelnen Begrenzer zu lokalisieren, und =MID(), um den Text zwischen den einzelnen Begrenzungssätzen herauszuziehen, wobei Sie den vorherigen Begrenzer als Startnummer verwenden.

Auf jeden Fall die komplexere der beiden Methoden.

2
Aaron Contreras

Wenn ich richtig verstehe, würde ich zunächst einmal =VLOOKUP(A1;'mySheet'!$A:LastColumn;COLUMN(B1);FALSE) verwenden. Auf diese Weise wird Ihre Spaltenreferenz verschoben, wenn Sie Ihren Vlookup nach rechts ziehen.

1
114

Keine Formel. Keine Ausgabe. Daher kann es keine Möglichkeit geben, die Formel nur auf eine Spalte anzuwenden und auf die anderen zu kommen. Die andere mögliche Möglichkeit ist, die Formel in eine Zelle zu setzen, $ -Zeichen geschickt zu verwenden und alle Zellen in einem Giffy ohne zu ziehen vlookup 40 mal setzen müssen.

Vlookup hat 4 Codes zur Eingabe

1 - Nachschlagewert. Verwenden Sie diesen $A1 (setzen Sie $ auf A und nicht auf 1)

2 - Quelldaten- Setzen Sie $ Zeichen everywhere

3 - Spaltenindexnr. Fügen Sie direkt über Ihren gesamten Daten in der ersten Zeile eine leere Zeile hinzu. Fügen Sie die Werte 1 in A1, 2 in B1, 3 in C1 usw. ein. Jetzt in der Formel, anstatt manuell "2" oder "3" zu setzen. Verweisen Sie auf diese Zellen. Setzen Sie $ auf Numberal und nicht auf Spalte (B$1). 

4 - Typ false oder 0

Dann ziehen Sie das überall hin.

0
Rahul Shah
  1. Lookup-Wert. Verwenden Sie diese $ A1 (setzen Sie $ auf A und nicht auf 1)
  2. Quelldaten: Setzen Sie überall die Zeichen $
  3. Spaltenindex-Nr. Verwenden Sie einfach den Spaltennamen, aus dem Daten abgerufen werden müssen (z. B. SPALTE (B1), wenn der Nachschlagewert in Spalte A ist und Sie einen Wert aus Spalte B wünschen).
  4. Geben Sie false oder 0 ein.
0
user6920348