2017-06-16 5 views
0

Mein Skript übernimmt Daten aus mehreren Blättern und erstellt ein neues Arbeitsblatt. Das Problem, auf das ich stoße, ist, wie man an das Ende einer Spalte anfügt. Ich versuchte das:Anfügen von Daten an eine Spalte in einer Schleife

LastRow = Sheets("Test").Cells(Rows.Count, "A").End(xlUp).Row 

Wo LastRow als lang definiert ist, aber ich lief in einen Fehler, als meine Schleife weiterging. Hier ist, was ich bisher:

Sub autoFill() 
    Dim wb As Workbook, ws As Worksheet 
    Dim LastRow As Long 
    Dim Unit As String 
    Dim ddg As Variant, i As Variant 

    Set wb = ActiveWorkbook 
    Set ws = wb.Worksheets("Mapping") 
    ddg = ws.Range("F4:F21").Value 
    For Each i In ddg 
     Unit = "Unit #" & i 
     LastRow = Sheets("Test").Cells(Rows.Count, "A").End(xlUp).Row 
     Sheets(Unit).Range("A2:A100").Copy Destination:=Sheets("Test").Range("A1" & LastRow) 
     Sheets(Unit).Range("B2:B100").Copy Destination:=Sheets("Test").Range("B1" & LastRow) 
    Next i 
End Sub 

Antwort

1

Nur eine Reihe WAY holen oben, was auch immer die letzte Zeile in sein könnte, was auch immer Spalte aufgefüllt wird (A in diesem Fall), wenn xlUp verwendet. 1 in die nächste Zeile zu erhalten:

LastRow = Sheets("Test").Range("A50000").End(xlUp).Row + 1 

LastRow hat jetzt eine Zahl, die auf die erste freie Zeile in Spalte A von Blatt-Test gleich ist.

Verketten Sie nun diese Zahl mit "A", um einen Bereich wie "A50" zu erhalten. Gerade jetzt Sie tun:

Sheets(Unit).Range("A2:A100").Copy Destination:=Sheets("Test").Range("A1" & LastRow) 

, die die Nummer verketten auf „A1“, so dass Sie „A150“ erhalten, das Unsinn ist ... Statt:

Sheets(Unit).Range("A2:A100").Copy Destination:=Sheets("Test").Range("A" & LastRow) 
+0

Das funktionierte, vielen Dank! – kdean693

Verwandte Themen