Lost Information!

엑셀 VBA 기본 - VBA 배열변수에 대해 - 3편 본문

개인브랜드블로그를 만들어 보자/엑셀VBA

엑셀 VBA 기본 - VBA 배열변수에 대해 - 3편

Lostinformation 2021. 2. 24. 17:25

모두가 칼퇴하는 그날까지~

 

지난 글에서는

VBA배열 변수의

기본개념에 대해 

알려드렸습니다.

 

만일 저번 내용을 모르시거나

기억이 나질 않으신다면

밑에 글을 참고해주세요.

red-s.tistory.com/2520

 

엑셀 VBA 기본 - VBA 배열변수에 대해 - 2편

모두가 칼퇴하는 그날까지~ 지난 글에서는 VBA배열 변수에 대해 알려드렸습니다. 만일 저번 내용을 모르시거나 기억이 나질 않으신다면 밑에 글을 참고해주세요. red-s.tistory.com/2519 엑셀 VBA 기

red-s.tistory.com

 

이번 글에서는

저번 글까지 알려드렸던

VBA 배열 변수를

활용하는 방법

알려드리겠습니다.

 

그럼 엑셀을 실행해주세요.

 

 

가장 먼저 

Option Base 1

적어주고 나서 
VBA코드를 

작성해주시면 됩니다.

 

Option Base 1은

상단에 한 번만

적어주시면 됩니다.

 

그리고 위와 같이 작성해주세요

바로 설명해드리면

 

Sub Array_Type 1()
    Dim V(3)
    Dim i           As Long
    ActiveSheet.UsedRange.Clear

배열 방이 3개인 변수와

숫자 타입의 i 변수를

설정해주세요 

그리고 사용 중인 모든 범위에 

있는 값을 지워주세요

(초기화를 하고 코드 실행)

 

    V(1) = "1"
    V(2) = "2"
    V(3) = "3"

각 방의 마다 

1,2,3의 숫자를

넣어주세요


    Range("A1") = V(1)
    Range("A2") = V(2)
    Range("A3") = V(3)
End Sub

그리고 A1에는 V1의 값이

A2에는 V2의 값이

A3에는 V3의 값이 

들어가게 설정해주세요.

 

라고 적고 실행하게 되면

 

이렇게 숫자가 빠르게 

들어가게 됩니다.

 

하지만 이렇게 직접 하나하나

입력하는 것보다 저번 글에서

보여드렸던 FOR문을 활용하면

더 빠르게 숫자를 넣을 수 있죠.

 

또 이런 방식으로도

활용할 수 있죠.

 

Sub Array_Type 3()
    Dim V(10)
    Dim i           As Long

배열 방의 개수를 10개로 

설정하고 숫자 타입을

변수로 받을 i를 설정하고


ActiveSheet.UsedRange.Clear

초기화시켜준 후에


    For i = 1 To 10
        V(i) = i
    Next

1~10까지 돌아가면서

V값에 들어가게 설정하고

 

Range("A1"). Resize(10, 1) = Application.Transpose(V)
End Sub

A1부터 10행 1열로 

차례대로 세로로 넣어줘

 

라고 설정하고 실행하면

 

이렇게 들어가게 됩니다.

 

Sub Array_Type4()
    Dim V(10)
    Dim i           As Long
    ActiveSheet.UsedRange.Clear
    For i = 1 To 10
        V(i) = i
    Next
    Range("A1"). Resize(10, 10) = Application.Transpose(V)
End Sub

 

당연히 10행 10열로 실행하게 되면

 

 

이렇게 많은 숫자도 

정말 빠른 속도로 입력할 수 

있습니다.

 

Sub Array_Test()
    Dim V(49997)
    Dim i           As Long
    Dim T

    T = Now

    For i = 1 To 49997
        V(i) = Range("G" & i + 2) * Range("H" & i + 2)
    Next
    Range("I3") Resize(49997, 1) = ApplicationTranspose(V)

    T = Now - T
    MsgBox Format(T, "HH:MM:SS")

End Sub

 

또한 숫자를 입력하는 것 외에

G값과 H값의 곱셈 값을

5 만행까지 몇 초에 가능한지 

확인해본다면

단 1초도 밖에 걸리지 않는다는 것을

확인해볼 수도 있습니다.

 

그렇다면 다른 복잡한 데이터를

다루는 작업을 할 때 배열을

활용하신다면 다른 코드보다

조금 더 빠르게 작업을 하실 수

있을 거라 생각합니다.

 

그럼 여기까지 궁금하신 점은

댓글에 남겨주시고 

공감구독도 부탁드립니다.

 

 

Comments