Liebe Community,
ich habe unter Makro-Excel.de eine Beispiel-Datei inkl. Code für ein Makro mit SVERWEIs gefunden. Der Code funktioniert auch bestens, leider habe ich zum einen einige Verstädnisfragen, zum anderen haben sich kleine Probleme bei der Anpassung auf meine Datei ergeben. Die Probleme und Fragen habe ich innerhalb des Codes als Notiz gekennzeichnet und werde sie unterhalb des Codes kurz erläutern.
Option Explicit
Sub SVERWEIS_Vlookup()
Debug.Print Now
Dim i As Long, letzteZeile As Long ‘Verständnisfrage_1
Dim Arbeitsmappe As Workbook
Dim Datenbasis As Worksheet
Dim Ziel As Worksheet
Dim Bereich As Range
Dim ZelleFirma As Range ‘Verständnisfrage_2
Dim WsF As WorksheetFunction
Set Arbeitsmappe = ThisWorkbook
Set Datenbasis = Arbeitsmappe.Worksheets("Quelle") ‘Problem_1
Set Ziel = Arbeitsmappe.Worksheets("Ziel (Makro Variante1)")
letzteZeile = Datenbasis.Range("A1048576").End(xlUp).Row ‘Problem_2
Set Bereich = Datenbasis.Range("A1:G" & letzteZeile)
Set WsF = Application.WorksheetFunction
For i = 3 To Ziel.Range("A1048576").End(xlUp).Row ‘Verständnisfrage_1 und Problem_2
Ziel.Range("B" & i).Value = WsF.VLookup(Ziel.Range("A" & i).Value, Bereich, 3, False)
Ziel.Range("C" & i).Value = WsF.VLookup(Ziel.Range("A" & i).Value, Bereich, 4, False)
Ziel.Range("D" & i).Value = WsF.VLookup(Ziel.Range("A" & i).Value, Bereich, 5, False)
Ziel.Range("E" & i).Value = WsF.VLookup(Ziel.Range("A" & i).Value, Bereich, 6, False)
Ziel.Range("F" & i).Value = WsF.VLookup(Ziel.Range("A" & i).Value, Bereich, 7, False)
Next i
Debug.Print Now
End Sub
Probleme:
Problem 1:
Der Code greift für den SVERWEIS auf eine Datenquelle in tab "Quelle" innerhalb der Datei zurück. In meinem Fall befindet sich die Quelldatei unter N:\Rev\Data\Masterdata und trägt den Namen "Abzugsdatei". Innerhalb der Datei befinden sich die Quelldaten in Tab "Tabelle1". Als Neuling weiss ich leider nicht, wie ich den Code korrekt auf den Pfad verlinke. Am liebsten wäre es mir, wenn die Datei während der SVERWEIS durchgeführt wird, geöffnet wäre.
Problem 2:
Der SVERWEIS sollte am besten erst ab Zeile 12404 für die jeweiligen Spalten B-F ausgeführt werden. Aktuell befüllt er, so meine Vermutung, sämtliche Zeilen der Spalte B-F.
Verständnisfragen:
Frage 1: Zuerst wird i als letzte Zeile definiert, oder? Wieso wird am unteren Teil des Codes i = 3 gesetzt? Was bedeutet das? Wieso habe ich zB bei Ziel.Range("B" & i) das i mitdrin?
Frage 2: Was bedeutet ZelleFirma as Range? Daraus werde ich nicht schlau.
Die ursprüngliche Datei befindet sich unter http://www.makro-excel.de/2015/05/06/wissenswert-sverweis-funktion-und-makro-alternative/
Ich würde mich über Antworten wahnsinnig freuen :)
VG
VBA_Neuling
|