Hallo zusammen,
ich verzweifle gerade an meiner VBA Lookup Formel.
Folgende Ausgangssituation: Ich habe zwei Tabellen (SAP-Export) aus denen ich jeweils ausgewählte Daten zusammenführen will. Mein Workbook besteht aus drei Sheets: "Meldung" (Export 1), "Auftrag"(Export2) und Ergebnis (Verweisziel). Grundlage ist das Sheet "Meldung" weshalb ich das erstmal nach Ergebnis rüberkopieren lasse.
Daraus ergibt sich für mich die erste Frage: Ich behelfe mir aktuell, indem ich den Bereich statisch mit a1:n2500 beschreibe. Kann ich das irgendwie schöner und dynamisch machen? Der Export hat mal 1500, mal 1600 Zeilen... ihr wisst schon :-)
Frage 2: Ich bekomme beim dritten Lookup (fett markiert) den LFZ 1004: "Die VLookup Eigenschaft des WorksheetFunktion-Objektes kann nicht zugeordnet werden."
Ich hab ein Brett vor dem Kopf und kann meinen Fehler einfach nicht finden.
Würde mich freuen wenn mir jemand weiterhelfen kann :-)
Danke und schöne Grüße,
Moritz
Option Explicit
Sub SVERWEIS_Vlookup()
Dim i As Long, letzteZeileAuftrag As Long, letzteZeileMeldung As Long
Dim Arbeitsmappe As Workbook
Dim DatenbasisAuftrag As Worksheet
Dim DatenbasisMeldung As Worksheet
Dim Ziel As Worksheet
Dim BereichAuftrag As Range
Dim BereichMeldung As Range
Dim ZelleFirma As Range
Dim WsF As WorksheetFunction
'Definitionen
Set Arbeitsmappe = ThisWorkbook
Set DatenbasisAuftrag = Arbeitsmappe.Worksheets("Auftrag")
Set DatenbasisMeldung = Arbeitsmappe.Worksheets("Meldung")
Set Ziel = Arbeitsmappe.Worksheets("Ergebnis")
letzteZeileAuftrag = DatenbasisAuftrag.Range("A1048576").End(xlUp).Row
letzteZeileMeldung = DatenbasisMeldung.Range("A1048576").End(xlUp).Row
Set BereichAuftrag = DatenbasisAuftrag.Range("A1:D" & letzteZeileAuftrag)
Set BereichMeldung = DatenbasisMeldung.Range("A1:L" & letzteZeileMeldung)
Set WsF = Application.WorksheetFunction
'Als Text formatierte Zahlen umwandeln
Arbeitsmappe.Worksheets("Meldung").Columns("A:A").TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(1, 1), TrailingMinusNumbers:=True
Arbeitsmappe.Worksheets("Meldung").Columns("B:B").TextToColumns Destination:=Range("B1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(1, 1), TrailingMinusNumbers:=True
'Rohdaten (Meldungen) in neues Tabellenblatt (Ergebnis) kopieren
Sheets("Meldung").Range("a1:n2500").Copy
Sheets("Ergebnis").Range("a1").PasteSpecial Paste:=xlValues
'Spalten einfügen und benennen
Columns("B:C").Insert Shift:=xlToRight
Columns("E:F").Insert Shift:=xlToRight
Columns("O:P").Delete
Range("b1") = "Gew.Beginn"
Range("C1") = "Gew.Ende"
Range("E1") = "Eckstarttermin"
Range("F1") = "Eckendtermin"
'Lookup Befehl: Eckstart, Eckende, Gew. Beginn, Gew. Ende
For i = 2 To Ziel.Range("A1048576").End(xlUp).Row
Ziel.Range("E" & i).Value = WsF.VLookup(Ziel.Range("D" & i).Value, BereichAuftrag, 3, False)
Ziel.Range("F" & i).Value = WsF.VLookup(Ziel.Range("D" & i).Value, BereichAuftrag, 4, False)
Ziel.Range("B" & i).Value = WsF.VLookup(Ziel.Range("D" & i).Value, BereichsMeldung, 11, False)
On Error Resume Next
Next i
'Die eingefügten Spalten C und D als Datum formatieren (ab Zeile 2, damit Spaltentitel ausgenommen)
Range("a2:a2500").NumberFormat = "General"
Range("d2:D2500").NumberFormat = "General"
Range("B2:C2500").NumberFormat = "dd.mm.yyyy"
Range("E2:F2500").NumberFormat = "dd.mm.yyyy"
End Sub
|