Cut specific rows and paste to new workbook faster
For one thing, I think you should do all 20 values all at once, in a single loop. First, create the workbooks so you can access them:

Workbooks.Add
ActiveWorkbook.Name = "value1"
Workbooks.Add
ActiveWorkbook.Name = "value2"


Then you can just check the value against one of the workbook names instead:

transfer_row = 2
Dim Transfer_Value as String
Do Until Range("L" &amp; transfer_row) = ""
    Transfer_Value = Range("L" &amp; transfer_row)
    Select Case Transfer_Value
        Case "value1", "value2"
            Workbooks(old_workbook).Worksheets(old_sheet).Range(transfer_row &amp; ":" &amp; transfer_row).Cut _
                Workbooks(Transfer_Value).Worksheets("Sheet1").Range("A" &amp; new_transfer)
            Workbooks(old_workbook).Worksheets(old_sheet).Rows(transfer_row).Delete Shift:=xlUp
        Case Else
            transfer_row = transfer_row + 1
    End Select
Loop


If you have an array or something with the different values in it, you could use that instead of a massive Case string.