VBA를 사용하여 Excel의 특정 범위에서 배열 만들기

Bilal Shahid 2024년2월15일
  1. VBA의 배열
  2. 특정 셀 범위로 배열 만들기
VBA를 사용하여 Excel의 특정 범위에서 배열 만들기

이 자습서에서는 VBA의 배열에 대해 교육하고 VBA를 사용하여 MS Excel에서 지정된 범위를 사용하여 배열을 만드는 방법을 보여줍니다.

주요 주제로 이동하기 전에 VBA의 배열에 대해 배우는 것이 필수적입니다. 그것부터 시작합시다.

VBA의 배열

배열은 색인의 도움으로 액세스할 수 있는 유사한 개체의 모음입니다. VBA에서 배열을 정의하는 것은 매우 쉽습니다. VBA에서 정적 배열동적 배열의 두 가지 유형의 배열을 선언할 수 있습니다.

정적 배열은 정의된 값의 수만 저장할 수 있는 고정 크기 배열입니다. 크기가 7문자열 데이터 유형의 배열을 선언하는 다음 예를 참조하십시오.

 Dim arr(7) As String

동적 배열에는 정의된 크기가 없으며 프로그램을 따라 확장할 수 있습니다. 아래 언급된 두 문장 중 하나를 사용하여 선언할 수 있습니다.

Dim arr() As String

또는

Dim arr As Variant

VBA에서 배열에 값을 할당하는 것은 매우 쉽습니다. 정적 배열의 경우 다음 명령문을 사용하여 값을 할당할 수 있습니다.

arr (index) = Value

처음에 동적 배열은 크기로 선언되지 않습니다. 따라서 동적 배열에 값을 할당하려면 크기로 다시 선언한 다음 값을 할당합니다.

ReDim arr(size)
arr (index) = value

이제 VBA의 배열에 대해 충분히 알게 되었으므로 VBA를 사용하여 Microsoft Excel에서 지정된 범위의 배열을 만드는 방법을 알아보겠습니다.

특정 셀 범위로 배열 만들기

위에 작성된 섹션에서는 간단한 배열을 선언하는 방법에 대해 설명합니다. 그러나 Microsoft Excel에서 특정 셀 범위의 값을 포함하는 배열을 만드는 것은 언급하지 않습니다.

셀 값으로 배열을 할당하려면 다음 코드 문을 사용할 수 있습니다.

Dim arr As Variant 
arr= Range("A1:A10").Value

arr동적 배열로 선언되어 할당된 셀 범위를 허용할 수 있습니다. 코드 문은 완벽하게 실행되지만 A1:A10 셀 범위에 대해 2차원 배열을 만듭니다. 아래 이미지에서 볼 수 있습니다.

vba를 사용하여 Excel에서 특정 범위의 배열 만들기 - image one

참고: 배열 인덱스는 0 대신 1부터 시작합니다.

사용자, 특히 초보자에게는 2차원 배열 작업이 어려울 수 있습니다.

따라서 항상 1차원 배열이 작업하기 더 쉽기 때문에 2차원 배열을 1차원 배열로 변환할 수 있는 솔루션을 찾는 것이 필수적입니다.

2D 배열을 1D 배열로 변환

2차원 배열을 1차원 배열로 변환할 때 두 가지 시나리오가 있습니다. 한 가지 시나리오는 셀 범위가 열의 범위인 경우입니다. 다른 시나리오는 셀 범위가 행의 범위인 경우입니다.

열 셀 범위

열의 값을 1차원 배열에 저장하려면 Range() 함수에서 Application.Transpose() 함수를 사용할 수 있습니다.

Range() 함수에 언급된 열 범위의 셀 값을 포함하는 1차원 배열을 반환합니다. 이를 위해 다음 코드 펜스를 사용할 수 있습니다.

Dim myArr As Variant
myArr = Application.Transpose(Range("A1:A10"))

실행 시 코드 문은 다음 결과를 생성합니다.

vba를 사용하여 Excel에서 특정 범위의 배열 만들기 - 이미지 2

행 셀 범위

행의 값을 1차원 배열에 저장하려면 Application.Transpose() 함수를 Range() 함수에서 두 번 사용해야 합니다.

결과 배열은 Range() 함수에 언급된 행 범위의 셀 값을 포함하는 1차원 배열이 됩니다. 이를 위해 다음 코드 블록을 사용할 수 있습니다.

Dim myArr As Variant
myArr = Application.Transpose(Application.Transpose(Range("A1:J1")))

실행 시 코드 문은 다음 결과를 생성합니다.

vba를 사용하여 Excel에서 특정 범위의 배열 만들기 - 이미지 3

참고: 두 시나리오 모두에서 배열이 인덱스 0 대신 인덱스 1에서 시작한다는 것을 알 수 있습니다. Application.Transpose() 함수는 배열의 인덱스를 변경하지 않습니다.

최신 버전의 Microsoft Excel에서는 Application.Transpose() 기능의 수정된 버전을 사용한다는 점에 유의하는 것도 중요합니다.

Application.WorksheetFunction.Transpose()는 최신 버전의 Microsoft Excel에서 Application.Transpose() 함수의 대안으로 사용됩니다.

작가: Bilal Shahid
Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub

관련 문장 - VBA Array