Hallo zusammen,
nachdem ich hier nun echt viele Stunden gesucht und Vorschläge aus älteren Artikel aus dem Forum erfolglos ausprobiert habe, habe ich mich entschlossen mich doch noch anzumelden und um Rat zu bitten, mir wurde hier über Archivartikel echt schon sehr viel geholfen! :)
Ich habe eigentlich einen normalen Sverweis:
ActiveCell.FormulaR1C1 = "=IFNA(VLOOKUP(RC[-2],R2C15:R20000C16,2,FALSE),"""")"
Nun hätte ich gerne, dass die Matrix des Sverweis statt immer bis zur 20000. Zeile zu laufen einen dynamischen Bereich ansteuert, falls ich deutlich weniger oder auch mehr Datenzeilen in der Tabelle auszuwerten habe, was beides vorkommen kann.
Ich hatte hier im Forum die folgende Funktion gefunden, welche mir die letzte Reihe auswirft und konnte diese schon an andereen Stellen in der Range erfolgreich einbauen:
Function LastRow(wks As Worksheet) As Long Dim lngFirst As Long, lngLast As Long, lngTmp As Long With Application If .CountA(wks.Cells) = 0 Then Exit Function If .CountA(wks.Rows(wks.Rows.Count)) Then LastRow = wks.Rows.Count: Exit Function End If lngLast = wks.Rows.Count Do While lngLast > lngFirst + 1 lngTmp = (lngFirst + lngLast) \ 2 If .CountA(wks.Rows(lngTmp).Resize(lngLast - lngTmp)) Then _ lngFirst = lngTmp Else lngLast = lngTmp Loop If .CountA(wks.Rows(lngLast)) Then LastRow = lngLast Else LastRow = lngFirst End With End Function
Nun hatte ich als VBA Laie gedacht, dass ich diese Funktion wie bei der Range auch einfach in den Sverweis einbinden kann und kam daher auf folgende Idee, die nicht funktionierte:
ActiveCell.FormulaR1C1 = "=IFNA(VLOOKUP(RC[-2],R2C15:R & LastRow(Sheets("Tabelle 2"))C16,2,FALSE),"""")"
Als Fehler wird mir immer die Tabelle 2 markiert und "erwarte Anweisungsende" angegeben.
Gibt es eine Lösung, um das Ergebnis der Funktion in die Sverweis-Formel einzubinden? Ich habe hier sonst nur Lösungen mit der Indirekt-Formel gefunden, aus denen ich aber auch nicht so ganz schlau wurde.
Ich freue mich sehr über eure Tipps!
Schönen Abend und vielen Dank :)