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
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
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
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)) = tmpArGruß Tino