SVerweis als VBA

Bild

Betrifft: SVerweis als VBA
von: Ali
Geschrieben am: 12.08.2015 17:37:25

Hallo zusammen,
ich hoffe ich bin hier richtig. Die Anfrage wurde sicherlich schon 1000 gestellt, aber finde die für mich angepasste Lösung nicht.
ich möchte einen SVerweis als VBA programieren. Leider funktioniert es noch nicht 100 %.
Folgenden Code habe ich per Macroaufzeichnung gebastet.


Sub Makro5()
'
' Makro5 Makro
'
ActiveCell.FormulaR1C1
    ActiveCell.FormulaR1C1 = _
        "=VLOOKUP(RC[1],'[Test Datei.xlsx]Tabelle1'!C1:C2,2,FALSE)"
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("C4").Select
    Application.CutCopyMode = False
    
    ActiveCell.FormulaR1C1 = _
        "=VLOOKUP(RC[1],'[Test Datei.xlsx]Tabelle1'!C1:C2,2,FALSE)"
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("C5").Select
    Application.CutCopyMode = False
    
    ActiveCell.FormulaR1C1 = _
        "=VLOOKUP(RC[1],'[Test Datei.xlsx]Tabelle1'!C1:C2,2,FALSE)"
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
        Range("C6").Select
    Application.CutCopyMode = False
    
      ActiveCell.FormulaR1C1 = _
        "=VLOOKUP(RC[1],'[Test Datei.xlsx]Tabelle1'!C1:C2,2,FALSE)"
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
        Range("C7").Select
    Application.CutCopyMode = False
    
    
      ActiveCell.FormulaR1C1 = _
        "=VLOOKUP(RC[1],'[Test Datei.xlsx]Tabelle1'!C1:C2,2,FALSE)"
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
        Range("C8").Select
    Application.CutCopyMode = False
    
End Sub


Jetzt möchte ich nicht für jede Zeile die Formel Neu schreiben sondern das immer die nächste Zeile genommen wird und zwar von C1 runter bis beispiel C500.
Könnt Ihr mir helfen, wie ich die Schleife dort reinbekomme?
Vielen Dank

Bild

Betrifft: AW: SVerweis als VBA
von: AlexG
Geschrieben am: 12.08.2015 17:44:53
Hallo Ali,
der Makrorecoder zeichnet immer das Selktieren der Zellen mit auf, das brauchst du aber nicht.
In diesem Fall anstelle ActiveCell einfach den Bereich setzten.

Range("C1:C500").FormulaR1C1 = "=VLOOKUP(RC[1],'[Test Datei.xlsx]Tabelle1'!C1:C2,2,FALSE)"
Gruß
Alex

Bild

Betrifft: AW: SVerweis als VBA
von: Ali
Geschrieben am: 12.08.2015 18:16:17
Hallo,
super danke für die Antwort.


Sub Makro5()
'
' Makro5 Makro
'
    Range("C1:C50").FormulaR1C1 = "=VLOOKUP(RC[1],'[Test Datei.xlsx]Tabelle1'!C1:C2,2,FALSE)"
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("C4").Select
    Application.CutCopyMode = False
    
End Sub


es funktioniert super, allerdings funktioniert das kopieren und einfügen nicht mehr. Grund der ganzen Formel war das ich einen Liste habe und einen SVERWEIS eifügen wollte, weil mir die Berechnung viel zu lange gedauert hat, hatte ich überelgt das ganze als VBA Code einzutragen, danach das Ergebnis zu kopieren und als Wert wieder einfügen zu lassen. Das hat auch alles super geklappt und war super schnell, nun funktioniert das Copy Past nicht mehr. Bringt das überhaupt was mit der Schnelligkeit? also anstatt den Sverweis als Formel diesen als VBA zu hinterlegen.
LG

Bild

Betrifft: SVerweis Bereich einschränken
von: AlexG
Geschrieben am: 12.08.2015 18:52:45
Hallo Ali,
du solltest lieber deinen Bereich eingrenzen. Und nicht die ganzen Spalten als Matrix angeben.
VBA wird hier sicherlich nicht schneller sein, wenn der Sverweis eingetragen und das Ergebnis als Festwert übernommen wird.
Gruß
Alex

 Bild

Beiträge aus den Excel-Beispielen zum Thema "SVerweis als VBA"