Быстрее L oop с VLOOKUP из другой книги - PullRequest
0 голосов
/ 16 января 2020

Код берет информацию из другого диапазона ячеек на том же листе («Подробный отчет о неупорядоченных RAW») и создает новую рядом с ним, используя данные слева.

Мой код принимает от 45 минут до часа для 70 тыс. рядов клеток. Есть ли способ сделать петли go быстрее?

Sub cruzar()

Dim i As Long
Dim last As Long
Dim user As String

Application.Calculation = xlCalculationManual
Application.EnableEvents = False
Application.ScreenUpdating = False
Sheets("Non Order RAW Detail Report").Select
last = ActiveSheet.UsedRange.Rows.Count

'-------------Cruzar--------------------------------
Range("W1").Value = "Year"
Range("x1").Value = "Month"
Range("y1").Value = "Creation Date"
Range("z1").Value = "Closed Date"
Range("AA1").Value = "Type Inquiry"
Range("AB1").Value = "Value"
Range("AC1").Value = "Status"
Range("AD1").Value = "Equal Month"
Range("AE1").Value = "Days"
Range("AF1").Value = "Bracket"
Range("W1:AF1").Interior.ColorIndex = 49
Range("W1:AF1").Font.Color = vbWhite
Range("W1:AF1").Font.Bold = True

user = Environ("username")

For i = 2 To last

    Cells(i, 23).Value = Cells(i, 15).Value
    Cells(i, 23).NumberFormat = "yyyy"

    Cells(i, 24).Value = Cells(i, 15).Value
    Cells(i, 24).NumberFormat = "mm"

    Cells(i, 25).Value = Cells(i, 15).Value
    Cells(i, 25).NumberFormat = "mm/dd/yyyy"

    Cells(i, 26).Value = Cells(i, 16).Value
    Cells(i, 26).NumberFormat = "mm/dd/yyyy"

    Cells(i, 27).Formula = "=VLOOKUP(N" & i & ",'C:\Users\" & user & "\Desktop\Americas\00 Inputs\[CategoryList_NAM_v2.xlsx]CATEGORIES'!$I:$J,2,0)"

    Cells(i, 28) = 1

    If Cells(i, 5).Value = "FCR" Then
        Cells(i, 29).Value = "FCR"
    Else
        Cells(i, 29).Value = "Follow Up"
    End If

    Cells(i, 30).Formula = "=IF(E" & i & "=""FCR"",""FCR"",IF(AND(MONTH(O" & i & ")=MONTH(P" & i & "),YEAR(O" & i & ")=YEAR(P" & i & ")),""Closed"",""Open""))"

    Cells(i, 31).Formula = "=IF(E" & i & "=""FCR"",""FCR"",IF(AD" & i & "=""Open"",""Open"",IF(((P" & i & "-O" & i & ")*24)<24,0,LOOKUP(((P" & i & "-O" & i & ")*24),'C:\Users\" & user & "\Desktop\Americas\00 Inputs\[1610_InputsDB.xlsx]Input'!$A$2:$B$366,'C:\Users\" & user & "\Desktop\Americas\00 Inputs\[1610_InputsDB.xlsx]Input'!$C$2:$C$366))))"

    Cells(i, 32).Formula = "=IF(AE" & i & "=""FCR"",""FCR"",IF(AE" & i & "=""Open"",""Open"",LOOKUP(AE" & i & ",'C:\Users\" & user & "\Desktop\Americas\00 Inputs\[1610_InputsDB.xlsx]Input'!$E$2:$F$9,'C:\Users\" & user & "\Desktop\Americas\00 Inputs\[1610_InputsDB.xlsx]Input'!$G$2:$G$9)))"

Next

Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
...