VBA 다차원 배열(2D 배열)

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

Younjung Kim

Last updated on 5월 3, 2023

이 튜토리얼에서는 VBA의 2차원 및 다차원 배열에 대해 설명합니다.

다차원 배열 (2D 배열)

다차원 배열은 하나 이상의 차원(일반적으로 2차원 또는 3차원)을 포함하는 배열이지만 배열은 최대 32개의 차원을 가질 수 있습니다.

2D 배열 선언하기

두 개 이상의 차원이 있는 배열을 만들려면 쉼표를 사용하여 각각의 개별 차원을 정의합니다:

Dim intArr(2,3) as Integer

2D 배열 채우기

아래 코드는 2D 배열을 채운 다음 워크시트의 셀들을 배열의 값으로 채웁니다.

Sub Populate2D()
'2D 배열을 선언합니다
   Dim intA(2, 3) As Integer
'변수들을 선언합니다
   Dim rw As Integer
   Dim col As Integer
'배열을 값으로 채웁니다
   intA(0, 0) = 45
   intA(0, 1) = 50
   intA(0, 2) = 55
   intA(0, 3) = 60
   intA(1, 0) = 65
   intA(1, 1) = 70
   intA(1, 2) = 75
   intA(1, 3) = 80
   intA(2, 0) = 85
   intA(2, 1) = 90
   intA(2, 2) = 95
   intA(2, 3) = 100
'배열을 반복하여 Excel의 셀에 값을 입력합니다
   For rw = 0 To 2
      For col = 0 To 3
         Cells(rw + 1, col + 1).Value = intA(rw, col)
      Next col
    Next rw
End Sub

위 코드를 실행하면 Excel에 다음과 같이 값이 입력될 것입니다.

vba 2D array

Excel 데이터로 2D 배열 채우기

아래 코드는 Excel 워크시트의 데이터로 2D 배열을 채운 다음 다른 시트에 배열의 값을 입력합니다.

Sub Populate2D()
'워크시트 객체를 선언합니다
   Dim ws_Source As Worksheet
   Dim ws_Destination As Worksheet
'배열을 선언합니다
   Dim wsData(10, 2) As Variant
'사용할 변수를 선언합니다
   Dim rw as Integer
   Dim col As Integer
'데이터 소스가 있는 시트를 정의합니다
Set ws_Source = Worksheets("Sheet1")
'데이터 소스가 있는 시트에서 정보를 가져와서 배열을 채워줍니다
   For rw = LBound(wsData, 1) To UBound(wsData, 1)
      For col = LBound(wsData, 2) To UBound(wsData, 2)
         wsData(rw, col) = ws_Source.Range("A2").Offset(rw, col).Value
      Next col
   Next rw
'데이터를 옮길 시트를 정의합니다
   Set ws_Destination = Worksheets("Sheet2")
'배열 값을 시트에 입력합니다
   For rw = LBound(wsData, 1) To UBound(wsData, 1)
      For col = LBound(wsData, 2) To UBound(wsData, 2)
         ws_Destination.Range("A1").Offset(rw,col).Value = wsData(rw, col)
      Next col
   Next rw
End Sub

ReDim과 ReDim Preserve문을 사용하여 크기 조정하기

ReDim을 사용하여 배열의 크기를 조정할 수 있습니다(자세히 알아보기).

Sub Resize2D()
'배열을 선언합니다
   Dim varArray() as Variant
'배열의 크기를 선언합니다
   ReDim varArray(1, 2)
   varArray(0, 0) = "Mel Smith"
   varArray(0, 1) = "Fred Buckle"
   varArray(0, 2) = "Jane Eyre"
   varArray(1, 0) = "Accountant"
   varArray(1, 1) = "Secretary"
   varArray(1, 2) = "Doctor"
'배열의 크기를 조정하여 다시 선언합니다
   ReDim varArray(0, 1)
'배열을 다시 채워줍니다
   varArray(0, 0) = "Mel Smith"
   varArray(0, 1) = "Fred Buckle"
End Sub

ReDim 문을 사용하여 배열을 다시 선언하면 이전에 배열에 저장된 모든 데이터가 손실됩니다. 이전 배열의 데이터를 보존하려면 ReDim Preserve 문을 사용해야 합니다.

Sub Resize2D()
'배열을 선언합니다
   Dim varArray() as Variant
'배열의 크기를 선언합니다
   ReDim varArray(1, 2)
   varArray(0, 0) = "Mel Smith"
   varArray(0, 1) = "Fred Buckle"
   varArray(0, 2) = "Jane Eyre"
   varArray(1, 0) = "Accountant"
   varArray(1, 1) = "Secretary"
   varArray(1, 2) = "Doctor"
'배열의 크기를 조정하여 다시 선언합니다
   ReDim Preserve varArray(1, 3)
 '기존 값을 보존한채로 추가 값으로 배열을 채웁니다
   varArray(0, 3) = "Rob Barnes"
   varArray(1, 3) = "Plumber"
End Sub

ReDim Preserve 문을 사용하여 배열의 원본 데이터를 유지하려는 경우 배열의 마지막 차원 크기만 조정할 수 있습니다.

디버그를 클릭하면 오류가 난 코드가 강조 표시됩니다. 다시 선언된 배열의 첫 번째 차원의 크기가 원래 배열과 동일하지 않기 때문에 오류가 발생합니다.

 

vba-free-addin

VBA 코드 예시 추가 기능

본 웹사이트에 있는 모든 코드 예시에 쉽게 접근해보세요.

메뉴로 이동하여 클릭만 하면 코드는 모듈에 바로 입력됩니다. .xlam 추가 기능.

(설치가 필요 없습니다!)

무료 다운로드

VBA 코드 예시로 돌아가기