VBA 배열과 Range의 속도차이!
2020. 1. 8. 13:17ㆍVBA/배열활용
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
반응형
'VBA > 배열활용' 카테고리의 다른 글
VBA 배열 내에서 날짜비교 최신날짜 가져오기 (MAX 미사용) (0) | 2020.04.13 |
---|---|
VBA 숫자 정렬, 버블정렬 1탄 (1) | 2020.01.08 |
VBA Redim Preserve 하다보면 발생하는 오류 '형식이 맞지 않습니다.' (0) | 2020.01.08 |
VBA 배열 중복 제거 후 재 할당하기 (0) | 2018.12.07 |
이미 2행으로 입력 된 배열에 3행 추가 방법 (0) | 2018.12.07 |