Microsoft Excel

Herbers Excel/VBA-Archiv

vlookup geht nicht | Herbers Excel-Forum


Betrifft: vlookup geht nicht von: Joachim
Geschrieben am: 21.01.2010 13:47:42

Hallo,

ich steh irgendwie aufm Schlauch:
ich versuch, vlookup mittels einer Schleife in die Zellen R3 bis R20000 zu schreiben.
Leider bricht es mit der Fehlermeldung Die VLookup-Eigenschaft des WorksheetFunction-Objektes kann nicht zugeordnet werden.
Suchriterium steht auf dem aktuellen Blatt Spalte C, Suchbereich auf dem Blatt Lieg Zellen I3 bis X7000; Suchspalte 7.

Hier der Code:
For i = 3 to 20000
Cells(18, i) = WorksheetFunction.VLookup(Cells(3, i), Worksheets("Lieg").Range("I3:X7000"), 7, False)
Next i

Am leibsten wäre es, wenn nicht die Formel eingetragen würde, sondern gleich das Ergebnis der Suche (quasi wie Inhalte einfügen-Werte).

Gruss
Joachim

  

Betrifft: Cells(3, i), von: Rudi Maintaire
Geschrieben am: 21.01.2010 13:56:37

Hallo,
also mein XL2003 hat nur 256 Spalten, nicht 20000.
mach mal Cells(i,18) und Cells(i, 3) draus.
Besser noch:

  With Range("R3:R20000")
    .FormulaR1C1 = "=vlookup(RC[-15],R3C9:R7000C24,7,0)"
    .Value = .Value
  End With

Gruß
Rudi


  

Betrifft: AW: Cells(3, i), von: Joachim
Geschrieben am: 21.01.2010 14:14:12

Hallo Rudi,

ja, das verwechsle ich immer mal wieder, dass bei Cells Spalten und Zeilen umgekehrt sind wie bei range.
Nun läuft sowohl meine Version als auch deine mit with. Allerdings stehe ich mit with aufm Kriegsfuss, soll heissen, da kenn ich mich nicht so gut aus.

Ein noch bestehendes Problem (bei beiden Varianten):
Viele Werte, die nun kommen, fangen mit vorangestellten Nullen an z.B. 0397847. Daraus wird nun 397847. Ich brauch aber die Null!

Gruss
Joachim


  

Betrifft: AW: Cells(3, i), von: Rudi Maintaire
Geschrieben am: 21.01.2010 15:15:18

Hallo,
dann so

Sub tt()
  With Range("R3:R20000")
    .FormulaR1C1 = "=vlookup(RC[-15],R3C9:R7000C24,7,0)"
    .Copy
    .PasteSpecial xlPasteValues
  End With
  Application.CutCopyMode = False
End Sub

Gruß
Rudi


  

Betrifft: @ Rudi - noch was offen von: Joachim
Geschrieben am: 21.01.2010 14:38:41

Hallo Rudi,

wie schon vorhin gepostet, "verschluckt" das Makro nun die führenden Nullen.
Schreibe ich aber direkt in die Tabelle den sverweis, bringt dieser mir die Nullen mit.
Nur das Makro nicht.
ist aber wichtig!

Gruss
Joachim


  

Betrifft: AW: vlookup geht nicht von: Tino
Geschrieben am: 21.01.2010 14:20:37

Hallo,
dies könnte so funktionieren.

Dim meAr, A&, tmpAr
Dim rngSuchBereich As Range

Set rngSuchBereich = Worksheets("Lieg").Range("I3:X7000")
meAr = Range("C3:C20000").Value
tmpAr = meAr
With Application.WorksheetFunction
    On Error Resume Next
    For A = 1 To UBound(meAr)
           tmpAr(A, 1) = ""
           tmpAr(A, 1) = .VLookup(meAr(A, 1), rngSuchBereich, 7, False)
    Next A
End With

Range("R3").Resize(UBound(meAr)) = tmpAr

Wenn Du die Daten in der Tabelle Lieg nach der Spalte i Sortieren kannst,
gehts mit diesem Code etwas schneller.
Dim meAr, A&, tmpAr
Dim rngSuchBereich As Range

Set rngSuchBereich = Worksheets("Lieg").Range("I3:X7000")
meAr = Range("C3:C20000").Value
tmpAr = meAr
With Application.WorksheetFunction
    On Error Resume Next
    For A = 1 To UBound(meAr)
       tmpAr(A, 1) = ""
       If .VLookup(meAr(A, 1), rngSuchBereich, 1, True) = meAr(A, 1) Then
           tmpAr(A, 1) = .VLookup(meAr(A, 1), rngSuchBereich, 7, True)
       End If
    Next A
End With

Range("R3").Resize(UBound(meAr)) = tmpAr
Gruß Tino