Thema Datum  Von Nutzer Rating
Antwort
Rot VBA Lookup
17.10.2016 15:50:21 Moritz
Solved
17.10.2016 18:10:07 Gast29482
NotSolved
17.10.2016 18:26:02 Gast29482
NotSolved
18.10.2016 09:02:59 Gast30942
NotSolved
18.10.2016 11:56:57 Gast29482
NotSolved
19.10.2016 08:27:42 Moritz
NotSolved

Ansicht des Beitrags:
Von:
Moritz
Datum:
17.10.2016 15:50:21
Views:
2079
Rating: Antwort:
 Nein
Thema:
VBA Lookup

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

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot VBA Lookup
17.10.2016 15:50:21 Moritz
Solved
17.10.2016 18:10:07 Gast29482
NotSolved
17.10.2016 18:26:02 Gast29482
NotSolved
18.10.2016 09:02:59 Gast30942
NotSolved
18.10.2016 11:56:57 Gast29482
NotSolved
19.10.2016 08:27:42 Moritz
NotSolved