Anzeige
Archiv - Navigation
1900to1904
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

VBA S-Verweis mit Schleife

VBA S-Verweis mit Schleife
12.10.2022 16:18:57
Felix
Hallo,
habe in Excel VBA folgendes Problem:
Ich möchte per VBA einen S-Verweis mit einer For-Schleife erstellen, es will jedoch einfach nicht funktionieren.
Formel in VBA:

Sub S-Verweis ()
Dim a as Long
Dim c as Long
a = Cells(Rows.Count, 1).End(xlUp).Row
For c = 2 To a
Cells(c, "A").Value = WorksheetFunction.VLookop(Cells(c, "J").Value, Sheets("Tabelle2").Range("A2:B42"), 2, False)
Next c
End Sub
Ich will also quasi diese Formel: =sverweis(A2 ; $A$2:$B$42 , 2 , False) bis zur letzten gefüllten Zeile fortlaufen lassen.
Wenn ich den Code abspiele, kommt folgende Fehlermeldung:
Laufzeitfehler 1004
Die VLookup-Eigenschaft kann nicht zugeordnet werden.
Vielen Dank im Voraus

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

Betreff
Datum
Anwender
Anzeige
AW: VBA S-Verweis mit Schleife
12.10.2022 17:03:02
Daniel
Hi
wenn du das so machst, musst du vor der Ausführung des SVerweises sicherstellen, dass der Suchbegriff auch vorhanden ist.
wenn nicht, bekommst du den Fehlerabbruch, weil der SVerweis nicht ausgeführt werden kann.
mögliche Workarounds:
a) du nimmst application.VLookUp. das kann einen Fehlerwert zurückgeben, muss aber etwas gesondert behandelt werden:

Sub S-Verweis ()
Dim a as Long
Dim c as Long
dim x
a = Cells(Rows.Count, 1).End(xlUp).Row
For c = 2 To a
x = Application.VLookop(Cells(c, "J").Value, Sheets("Tabelle2").Range("A2:B42"), 2, False)
if IsError(x) then
Cells(c, "A") = ""
else
Cells(c, "A") = x
end if
Next c
End Sub
b) schreibe die Formel direkt in die Zellen und ersetze sie hinterher ggf durch ihren Wert.
das geht in der Regel auch schnelle als die Schleife:

With Range(Cells(2, "A"), Cells(a, "A"))
.FormulaR1C1 = "=VLookUp(RC10,Tabelle2!R2C1:R42C2,2,0)"
.Formula = .Value
End with
Gruß Daniel
Anzeige
AW: VBA S-Verweis mit Schleife
12.10.2022 17:30:12
Felix
Danke für die schnelle Antwort.
So wie du es aufgeführt hast hat es bei mir leider nicht geklappt, wahrscheinlich habe ich etwas nicht beachtet.
Nochmal kurz zu meinem Problem:
In Tabelle1 habe ich eine Liste die könnte so aussehen:
A B
1
1
3
3
2
Tabelle2
A B
1 Apfel
2 Birne
3 Traube
4 Banane
5 Kiwi
Nun möchte ich dass die Werte aus Tabelle 2 Spalte B passend in der Tabelle 1 Spalte B eingefügt werden.
Hoffe ihr könnt mir einigermaßen folgen.
AW: VBA S-Verweis mit Schleife
12.10.2022 18:06:07
Daniel
ja, passt schon alles.
zeig mal deinen Code, am besten zusammen mit der Datei, damit man mal testen kann was du so programmiert hast.
gruß Daniel
Anzeige
AW: VBA S-Verweis mit Schleife
12.10.2022 17:07:37
Fennek
Hallo,
als Konzept:

lr = Cells(Rows.Count, 1).End(xlUp).Row
Cells(2, 3).Copy
Range("C2:C" & lr).PasteSpecial xlPasteFormulas
In Worten:
lr: letzte Zeile Spalte A
copy/Paste: die Formel in C2 wird in die Spalte C bis zur letzten Zeile kopiert, der "Suchbegriff" ist jeweils die aktuelle Zeile
mfg
AW: VBA S-Verweis mit Schleife
12.10.2022 17:31:28
Felix
So hatte ich es nicht angedacht:
Siehe meine Antwort zu Daniels Beitrag.
AW: VBA S-Verweis mit Schleife
12.10.2022 19:05:39
GerdL
Moin Felix,
meinst du so:

Sub Unit()
With Sheets("Tabelle1")
With .Range(.Cells(2, 2), .Cells(.Cells(.Rows.Count, 1).End(xlUp).Row, 2)).Cells
.FormulaR1C1 = "=IFERROR(VLOOKUP(RC1,Tabelle2!C1:Tabelle2!C2,2,FALSE),"""")"
'.Formula = .Value  'Formel in Wert umwandeln
End With
End With
End Sub
Gruß Gerd
Anzeige

294 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige