2012-04-19 2 views
2

아래 코드가 잘못된 이유는 무엇입니까? 다른 통합 문서의 닫힌 데이터가있는 vlookup을 찾으려고합니다. 이 코드를 실행하면 실행하는 데 오랜 시간이 걸립니다. 마지막으로 멈추지 만 결과적으로 올바른 결과를 얻게됩니다.Vba -excel. 방정식 메서드가 느림

Sub testing() 
    Range("G1").EntireColumn.Insert 
    With Range("G2") 
    .Formula = "=VLOOKUP(F2,'C:\Users\sathisk\Desktop\Macros\ReferencePath\[HUL_Assets_18th April 2012.xls]HUL_Assets_18th April 2012.xls'!A$1:J$65536,10,0)" 
    .Copy 
    .Offset(0, -1).Select 
    End With 

    Selection.End(xlDown).Offset(0, 1).Select 

    With ActiveCell 
    .PasteSpecial xlPasteFormulas 
    .Copy 
    .Select 
    End With 

    Range(ActiveCell, Selection.End(xlUp)).PasteSpecial xlPasteFormulas 

End Sub 

답변

2

이 작업을 수행하려고하십니까?

Option Explicit 

Sub testing() 
    Dim LastRow As Long 

    Application.Calculation = xlCalculationManual 

    Range("G1").EntireColumn.Insert 

    LastRow = Range("F" & Rows.Count).End(xlUp).Row 

    With Range("G2:G" & LastRow) 
     .Formula = "=VLOOKUP(F2,'C:\Users\sathisk\Desktop\Macros\ReferencePath\[HUL_Assets_18th April 2012.xls]HUL_Assets_18th April 2012.xls'!A$1:J$65536,10,0)" 
    End With 

    Application.Calculation = xlCalculationAutomatic 
End Sub 

편집

은 또한 당신이 시트의 실제 마지막 행에 J$65536을 변경하는 것이 좋습니다. 예를 들어 데이터가 행 1000까지입니다 시트에 다음 나는 또한 프로세스 속도를

Application.ScreenUpdating 사용 = False '로 끄고 화면 업데이트를 추가 싯다 르트 나라 얀 추천에 추가 J$1000

+0

:) Thanks for the code Siddharth .. 왜 범위 J $ 65536을 사용하고 있습니까? Vloopup은 종결 된 통합 문서에서 데이터를 선택합니다. 통합 문서가 매일 d 행을 변경합니다. –

1

로 변경합니다. Application.Calculation와 함께 매크로의 상단에 = xlCalculationManual

다음 화면 업데이트에 Application.ScreenUpdating 사용 = TRUE '를 켭를 추가합니다. Application.Calculation = xlCalculationAutomatic

과 함께 바닥에 난 그냥 매크로의 어떤 화면 업데이트를 실행하거나 매크로가 완료 될 때까지 계산하기 위해 CPU를 확보하기 위해 두 가지 방법을 사용합니다.