VBA 배열과 Range의 속도차이!

2020. 1. 8. 13:17VBA/배열활용

728x90
반응형

 

100,000행에 "ㅎㅎ" 라는 글자를 넣는 업무를 한다고 하면!

Range를 사용해서 넣었을 때와 배열을 사용해서 넣었을 때의 속도차이를 보겠다.

우선 Range를 사용하여 "ㅎㅎ"라는 글자를 넣는다.

Range : 100,000 행에 "ㅎㅎ" 라는 글자 채우기 : 1.63초

[Range 사용]

Sub test()

Dim m As Workbook: Set m = Workbooks(ThisWorkbook.Name)
Dim ms As Worksheet: Set ms = m.Sheets(ActiveSheet.Name)
Dim oldTime As Single: oldTime = Timer

Dim rng As Range, rn As Range

Set rng = ms.Range("A1:A100000")

For Each rn In rng
    rn = "ㅎㅎ"
Next

MsgBox "총 " & Format(Timer - oldTime, "#0.00") & " : 초가 소요되었습니다."

End Sub






배열 : 100,000 행에 "ㅎㅎ" 라는 글자 채우기 : 0.29초

[배열 사용]

 

Sub test_배열사용()

Dim m As Workbook: Set m = Workbooks(ThisWorkbook.Name)
Dim ms As Worksheet: Set ms = m.Sheets(ActiveSheet.Name)
Dim oldTime As Single: oldTime = Timer

Dim rng As Range, rn As Range

Dim v As Variant

Set rng = ms.Range("A1:A100000")

v = rng '# Range를 한번에 배열에 넣기

For i = LBound(v, 1) To UBound(v, 1)
    
    v(i, 1) = "ㅎㅎ"
Next i

ms.Range("A1").Resize(UBound(v, 1), UBound(v, 2)) = v

MsgBox "총 " & Format(Timer - oldTime, "#0.00") & " : 초가 소요되었습니다."


End Sub

 

 

 

배열 : 100,000 행에 "ㅎㅎ" 라는 글자 채우기 : 0.29초

엄청난 차이를 보여준다...

Range : 100,000 행에 "ㅎㅎ" 라는 글자 채우기 : 1.63초

배열 : 100,000 행에 "ㅎㅎ" 라는 글자 채우기 : 0.29초

배열을 많이 활용 하자!

 

728x90
반응형