Range 개체

Array 함수

노만e 2025. 3. 11. 06:13

엑셀 VBA에서 Array 함수는 배열을 생성하는 함수입니다.

배열은 여러 개의 데이터를 하나의 변수에 저장할 수 있도록 해줍니다.


1. 기본 문법

Dim 배열이름 As Variant
배열이름 = Array(값1, 값2, 값3, ..., 값N)

📌 Array 함수는 항상 Variant 타입의 변수에 저장해야 합니다.

📌 배열의 인덱스는 기본적으로 0부터 시작합니다.

📌 엑셀 VBA에서는 정적 배열(크기가 고정된 배열)과 동적 배열(크기를 변경할 수 있는 배열) 이 있습니다.


2. 기본 예제

📌 배열 선언 및 사용

Sub 배열_기본()
Dim myArray As Variant
myArray = Array("사과", "바나나", "오렌지") ' 0번: 사과, 1번: 바나나, 2번: 오렌지
MsgBox myArray(0) ' "사과" 출력
MsgBox myArray(1) ' "바나나" 출력
End Sub

📌 myArray(0) → "사과"

📌 myArray(1) → "바나나"


📌 배열 값 반복 출력

Sub 배열_반복()
Dim myArray As Variant
Dim i As Integer
myArray = Array("A", "B", "C", "D")
For i = LBound(myArray) To UBound(myArray)
MsgBox myArray(i) ' 배열 요소 하나씩 출력
Next i
End Sub

📌 LBound(myArray) → 배열의 최소 인덱스 (기본값 0)

📌 UBound(myArray) → 배열의 최대 인덱스


3. 배열과 시트 데이터 활용

📌 배열을 사용하여 여러 셀에 값 입력

Sub 배열_셀_입력()
Dim myArray As Variant
myArray = Array("서울", "부산", "대구", "광주", "인천")
Range("A1:A5").Value = Application.Transpose(myArray) ' 세로로 입력
End Sub

📌 Application.Transpose() → 배열을 세로 방향으로 입력


📌 시트의 데이터를 배열에 저장

Sub 셀_데이터_배열저장()
Dim myArray As Variant
myArray = Range("A1:A5").Value ' 배열에 A1:A5 값 저장
MsgBox myArray(1, 1) ' 첫 번째 값 출력
End Sub

📌 엑셀 범위를 배열로 저장하면 (행, 열) 형태로 저장됨

📌 myArray(1,1) → A1의 값


4. 동적 배열 (크기 변경 가능)

Array 함수로 만든 배열은 크기를 변경할 수 없지만, ReDim을 사용하면 동적으로 배열 크기를 변경할 수 있습니다.

📌 동적 배열 선언 후 값 추가

Sub 동적_배열()
Dim myArray() As String
Dim i As Integer
ReDim myArray(4) ' 크기 5로 설정 (0~4)
myArray(0) = "빨강"
myArray(1) = "파랑"
myArray(2) = "초록"
myArray(3) = "노랑"
myArray(4) = "검정"
For i = LBound(myArray) To UBound(myArray)
MsgBox myArray(i)
Next i
End Sub

📌 ReDim myArray(4) → 크기를 5개로 설정 (0~4번 인덱스 사용 가능)

📌 ReDim은 기존 데이터가 초기화되므로 ReDim Preserve를 사용하면 유지 가능


📌 배열 크기 변경 시 기존 값 유지 (ReDim Preserve)

Sub 동적_배열_값유지()
Dim myArray() As String
Dim i As Integer
ReDim myArray(2) ' 크기 3으로 설정 (0~2)
myArray(0) = "빨강"
myArray(1) = "파랑"
myArray(2) = "초록"
ReDim Preserve myArray(4) ' 크기를 5로 확장, 기존 값 유지
myArray(3) = "노랑"
myArray(4) = "검정"
For i = LBound(myArray) To UBound(myArray)
MsgBox myArray(i)
Next i
End Sub

📌 ReDim Preserve myArray(4) → 크기를 확장하면서 기존 값 유지

📌 단, Preserve는 마지막 차원(1차원 배열의 경우 요소 수)만 변경 가능


5. 2차원 배열 (테이블 데이터 저장)

📌 2차원 배열 선언 및 데이터 저장

Sub 이차원_배열()
Dim myArray(2, 2) As String
myArray(0, 0) = "이름"
myArray(0, 1) = "나이"
myArray(0, 2) = "도시"
myArray(1, 0) = "홍길동"
myArray(1, 1) = "30"
myArray(1, 2) = "서울"
myArray(2, 0) = "김철수"
myArray(2, 1) = "25"
myArray(2, 2) = "부산"
MsgBox myArray(1, 0) ' 홍길동 출력
End Sub

📌 (행, 열) 형태의 데이터 저장 가능


📌 2차원 배열을 시트에 입력

Sub 이차원_배열_시트입력()
Dim myArray As Variant
myArray = Range("A1:C3").Value ' A1:C3 값을 배열로 저장
Range("E1:G3").Value = myArray ' 배열을 E1:G3에 입력
End Sub

📌 배열을 범위에 한 번에 입력 가능


6. Split 함수를 활용한 배열 생성

Array 함수 외에도 Split 함수를 사용하여 문자열을 배열로 변환할 수 있습니다.

📌 문자열을 배열로 변환

Sub 문자열_배열변환()
Dim myArray As Variant
myArray = Split("사과,바나나,오렌지", ",")
MsgBox myArray(0) ' "사과"
MsgBox myArray(1) ' "바나나"
End Sub

📌 쉼표(,)로 구분된 문자열을 배열로 변환


📝 정리

기능
VBA 코드
배열 선언 및 값 입력
Dim myArray As Variant : myArray = Array("A", "B", "C")
배열 값 출력
MsgBox myArray(0)
배열 값 반복 출력
For i = LBound(myArray) To UBound(myArray) : MsgBox myArray(i) : Next i
배열을 시트에 입력
Range("A1:A5").Value = Application.Transpose(myArray)
셀 데이터를 배열에 저장
myArray = Range("A1:A5").Value
동적 배열 크기 변경
ReDim myArray(4)
기존 데이터 유지하며 크기 변경
ReDim Preserve myArray(4)
2차원 배열 선언
Dim myArray(2, 2) As String
2차원 배열을 시트에 입력
Range("E1:G3").Value = myArray
문자열을 배열로 변환
myArray = Split("사과,바나나,오렌지", ",")

🔥 VBA에서 Array를 활용하면 데이터를 효율적으로 관리하고 자동화할 수 있습니다! 🚀