2017-05-26 1 views
-1

SampleSheet.xlsx gehen - https://www.dropbox.com/s/ugha8sjvgrpi5w7/SampleSheet.xlsx?dl=0Sammeln Zeilen, die zusammen mit einer neuen Spalte von SVERWEIS

Dies ist eine kleine, generische Version von dem, was mit der ich wirklich arbeiten. Was wäre meine "A" -Spalte ist extrem groß und "B" ist eine Auswahl der größeren Spalte. Spalten "C" bis "E" sind Daten, die mit jeder Person zusammenpassen (beachten Sie, dass nur die Personen in "B" diese Daten haben. In Spalte "G" habe ich einen SVERWEIS, um zu sehen, welche Namen in "B" übereinstimmen "A". Die Frage ist, wie kann ich automatisch die Daten in "CE" ziehen, dass die Übereinstimmungen haben. Zum Beispiel, wenn der SVERWEIS, "Austin" wird die Zeile "c1; c2; c3" nach ihm automatisch Verstehe, dass dies mit dem SVERWEIS, den ich gemacht habe, um die übereinstimmenden Namen zu erhalten, nicht möglich ist.

Ich möchte in der Lage sein, eine Tabelle mit den Daten a1, a2, a3 usw. mit nur den Namen zu erstellen, die eine Übereinstimmung in " A“

zum Beispiel, was will ich mit, um am Ende eine Tabelle wie folgt aus:. desired result

Antwort

0

Sie können dies als Makro schreiben und ausführen, wenn Sie mit Excel VBA vertraut sind.

Variablen hier zu betrachten, können Sie sie nach Ihren Wünschen ändern können:

  • Active Verwendet so dass Sie das Makro, während das Blatt mit Daten aktiv ist
  • Verwendet Spaltennummern beheben, Long-Daten verwenden müssen in Spalte A ist, ist Daten zu finden, in Spalten B Ausgabe beginnt, sich von Spalte J

bis E 0
Dim result, lastrow1, lastrow2, lastrow 
lastrow1 = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row 
lastrow2 = ActiveSheet.Range("B" & Rows.Count).End(xlUp).Row 
For Y = 1 To lastrow1 
result = Application.VLookup(ActiveSheet.Range("B" & Y),ActiveSheet.Range("A1:A16"), 1, False) 
If Not IsError(result) Then 
lastrow = ActiveSheet.Range("J" & Rows.Count).End(xlUp).Row + 1 
ActiveSheet.Range("J" & lastrow) = result 
ActiveSheet.Range("K" & lastrow) = Application.VLookup(ActiveSheet.Range("J" & lastrow), ActiveSheet.Range("B1:E" & lastrow2), 2, False) 
ActiveSheet.Range("L" & lastrow) = Application.VLookup(ActiveSheet.Range("J" & lastrow), ActiveSheet.Range("B1:E" & lastrow2), 3, False) 
ActiveSheet.Range("M" & lastrow) = Application.VLookup(ActiveSheet.Range("J" & lastrow), ActiveSheet.Range("B1:E" & lastrow2), 4, False) 
End If 
Next Y 
+0

Ich bekomme einen Fehler, wenn ich das: "Ungültige äußere Prozedur". Ich bin nicht wirklich vertraut mit VBA, ich bin mir nicht sicher, wie das zu beheben ist. Ich habe nur ein Modul ausgeführt. – AustinGlad

+0

In Ihrem Modul muss ein Codeblock zwischen Sub ......() und End Sub sein, wobei ..... der Makroname ist. Dies führt einen Codeblock, der ein Makro in Excel VBA ist. Um den Code auszuführen, muss er also zwischen einem Sub() .... und End Sub liegen. Der ... ist der Makroname, es kann das Makro sein, an dem Sie gerade arbeiten, oder Sie können es als neues Makro aufnehmen, indem Sie es Sub() MyNewMacro nach dem Einfügen des Codes benennen und bis zum Ende eine weitere Zeile End Sub hinzufügen. Hoffe, das ist klar. –

+0

Wunderbar. Vielen Dank. – AustinGlad

Verwandte Themen