2016-07-29 26 views
2

Ich benutze vlookup, nachdem ich es mit der Suche gefunden habe, verwende ich Autofill. Im Makro nach dem AutoFill-Code wird der Bereich gefunden und automatisch gefüllt. Aber in Bezug auf die Robustheit des Codes ist es nicht sinnvoll, da die gefundene Bandbreite dem Code entspricht. GrundsätzlichWie definiere ich den Endpunkt des Bereichs als letzte Zeile mit Daten?

ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-5],Sheet1!C[-5]:C[4],7,FALSE)" 
    Range("F2").Select 
    Selection.AutoFill Destination:=Range("F2:F502") 
    Range("F2:F502").Select 

ist der ursprüngliche Code, ich möchte nur Bereich tun ("F2: letzte Daten")

Vielen Dank im Voraus

Edit: Gelöst.

Dim LastRow As Long 

LastRow = Cells(Rows.Count, "F").End(xlUp).Row 


Range("F2").Select 


     ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-5],Sheet1!C[-5]:C[4],7,FALSE)" 
     Range("F2").Select 
     Selection.AutoFill Destination:=Range("F2", Cells(LastRow, 6)) 

Ich habe versucht, den Code zu vereinfachen, aber ich glaube, ich muss diese vor jeder

Antwort

0

Finden Sie die letzte Zeile VLOOKUP in Spalte F verwendet setzen.

Edit 1: hinzugefügt LastCol (aus Zeile 2 in diesem Beispiel))

ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-5],Sheet1!C[-5]:C[4],7,FALSE)" 
Range("F2").Select 

Dim LastRow As Long 
Dim LastCol As Long 

LastCol = Cells(2, Columns.Count).End(xlToLeft).Column 
LastRow = Cells(Rows.Count, LastCol).End(xlUp).row 

' assuming your data starts from row 2 
Selection.AutoFill Destination:=Range(Cells(2, LastCol), Cells(LastRow, LastCol)) 
Range(Cells(2, LastCol), Cells(LastRow, LastCol)).Select 
+0

Vielen Dank für die Antwort, zum Finden der letzten Zeile, wie kann ich den "F" Teil automatisieren. Weil Daten wirklich groß sind. – hakandeep

+0

@hakandeep siehe modifizierten Code –

+0

es automatisiert nicht die F tatsächlich, um zu automatisieren, sollte es keine Fs im Code sein. Mit diesem Code funktioniert es auch nicht für AutoFill. Aber danke für den Versuch und für Ihre Zeit – hakandeep

0

Sie müssen die letzte Zeile mit Rows.Count finden und Sie können, indem Sie Ihren Bereich ein wenig vereinfachen, so dass Sie nicht tun verwenden müssen Autofill:

Dim MyRange as Range: Set MyRange = Range("F2:F" & Cells(Rows.Count, "F").End(xlUp).Row) 

MyRange.FormulaR1C1 = "VLOOKUP(RC[-5],Sheet1!C[-5]:C[4],7,FALSE)" 

Außerdem sollten Sie versuchen, mit zu vermeiden SelectCheck here

+0

Vielen Dank für die Antwort, aber ich muss auswählen. Da Daten von Blatt zu Blatt übertragen werden, verwende ich die End-Eigenschaft. Ich habe auch nicht viel Zeit, also verwende ich generell Makroaufnahmen und versuche, die Flexibilität des Codes mit Modifikationen zu erhöhen. Ich denke auch, dass dieser Code die sich ändernden Zellen innerhalb der Formel vermisst, da er nach C2, C3, .. sucht. – hakandeep

+0

Auch der Code druckt nur F2 und F3 als vlookup Name. Es sollte die Daten von Spalte F von Blatt1 zu Vlookup auf Spalte F auf Blatt 2 genommen werden. Ich lege1.range = ("F2: F", aber ich denke, dass dieser Teil nicht funktioniert. Das ist mein Problem. Ich will es von F2 zur letzten Zeile, die Daten enthält – hakandeep