Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.04.2024 20:05:21
28.04.2024 18:33:31
28.04.2024 18:25:12
28.04.2024 14:18:05
Anzeige
Archiv - Navigation
1932to1936
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Sverweis/sonstige Formeln mit Dynamik

Sverweis/sonstige Formeln mit Dynamik
04.06.2023 23:34:10
Deli

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 :)

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Sverweis/sonstige Formeln mit Dynamik
05.06.2023 00:10:51
onur
Wenn überhaupt, so (testen kann ich nicht, da du ja KEINE DATEI gepostet hast):
ActiveCell.FormulaR1C1 = "=IFNA(VLOOKUP(RC[-2],R2C15:R" & LastRow(Sheets("Tabelle 2"))" & "C16,2,FALSE),"""")"
Du kannst nicht einfach mal ein paar VBA-Variablen (oder -Funktionen) in eine EXCEL-Formel einbauen und hoffen, dass es schon klappen wird.


Nimm den Rekorder. Dann siehst Du, ...
05.06.2023 00:12:19
lupo1
... dass eine neue linke Formelseite verwendet wird. Bitte genau hinschauen; es kommt auf ein einziges Zeichen an!


AW: Sverweis/sonstige Formeln mit Dynamik
05.06.2023 00:15:24
onur
Sorry - so:
ActiveCell.FormulaR1C1 = "=IFNA(VLOOKUP(RC[-2],R2C15:R" & LastRow(Sheets("Tabelle 2")) & "C16,2,FALSE),"""")"


Anzeige
AW: Sverweis/sonstige Formeln mit Dynamik
05.06.2023 00:33:41
GerdL
Moin Deli,
ActiveCell.FormulaR1C1 = _
 "=IFNA(VLOOKUP(RC[-2],R2C15:R" & Application.Max(2, Cells(Rows.Count, 15).End(xlUp).Row) & "C16,2,FALSE),"""")"
Gruß Gerd


AW: Sverweis/sonstige Formeln mit Dynamik
05.06.2023 06:33:06
RPP63
Moin!
Bei Excel 365 würde ich immer den XVERWEIS() nehmen, es sei denn, dass die Datei auch auf älteren Versionen funktionieren soll.
https://support.microsoft.com/de-de/office/xverweis-funktion-b7fd680e-6d10-43e6-84f9-88eae8bf5929
Die braucht auch kein WENNNV, das ist "build in".

Anyway:
Sowohl der SVERWEIS als auch der XVERWEIS kommen problemlos mit ganzen Spalten zurecht, da braucht nichts dynamisiert werden.
Insofern ist hier auch die Verwendung von VBA fragwürdig.

Gruß Ralf


Anzeige
Komisch, ich hatte folgendes verstanden:
05.06.2023 12:44:40
lupo1
dynamische Formel eintragen:

.Formula2R1C1 =

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige