Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

"Sverweis" per VBA?

Forumthread: "Sverweis" per VBA?

"Sverweis" per VBA?
01.10.2014 12:57:04
Dominic
Hi,
mit dem folgenden VBA Code erstelle ich mir eine Kundenliste, aus einer Datenbasis von über 76.000 Zeilen.
Jeder Kundenname der in der Datenbasis mehrere 100 mal aufgeführt wird, wird mit diesem VBA Code einmalig in das andere Tabellenblatt aufgelistet.
Nun möchte ich diesen VBA Code um eine weitere Funktion ergänzen.
Wenn die Kundenliste im Blatt "Datensammlungen" ab X3 aufgelistet wird, soll mir in der Spalte rechts daneben sprich ab Y3 die jeweils zugehörige eindeutige Kunden ID mit aufgeführt werden.
Diese ID wird im Tabellenblatt Datenbasis in Spalte A aufgeführt.
Wie kann ich das Skript nun so erweitern, dass zu jedem Kunden den er aus Spalte B des Blatts Datenbasis auch die ID aus Spalte A des Blatt Datenbasis übernimmt und in das Tabellenblatt Datensammlungen in Spalte X und Y übergeben/ untereinander aufführen?
Aktuell nutze ich in Zelle Y3 dafür folgende Funktion:
=WENNFEHLER(INDEX(Datenbasis!A:A;VERGLEICH(Datensammlungen!X3;Datenbasis!B:B;0));"")
Sub KundenListeErstellen()
Dim lRow As Long
With Sheets("Datenbasis")
lRow = .Cells(.Rows.Count, 2).End(xlUp).Row
.Range("B2:B" & lRow).Copy
End With
With Sheets("Datensammlungen")
.Range("X3").PasteSpecial
.Range("$X$3:$X$" & lRow - 1).RemoveDuplicates Columns:=1, Header:=xlNo
End With
Range("X1:AC350").Calculate
End Sub

Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: "Sverweis" per VBA?
01.10.2014 15:30:07
Daniel
HI
kopier die IDs doch gleich mit:
Sub KundenListeErstellen()
Dim lRow As Long
With Sheets("Datenbasis")
lRow = .Cells(.Rows.Count, 2).End(xlUp).Row
.Range("B2:B" & lRow).Copy
Sheets("Datensammlungen").Range("X3").PasteSpecial
.Range("A2:A" & lRow).Copy
Sheets("Datensammlungen").Range("Y3").PasteSpecial
End With
With Sheets("Datensammlungen")
.Range("$X$3:$Y$" & lRow + 1).RemoveDuplicates Columns:=1, Header:=xlNo
End With
Range("X1:AC350").Calculate
End Sub
wenn du beginnend bei Zeile 2 kopierst und dann in Zeile 3 einfügst, sollte es dann nicht "lRow + 1" lauten?
Gruß Daniel
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige