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차원 배열을 만듭니다. 아래 이미지에서 볼 수 있습니다.
참고: 배열 인덱스는
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"))
실행 시 코드 문은 다음 결과를 생성합니다.
행 셀 범위
행의 값을 1차원 배열에 저장하려면 Application.Transpose()
함수를 Range()
함수에서 두 번 사용해야 합니다.
결과 배열은 Range()
함수에 언급된 행 범위의 셀 값을 포함하는 1차원 배열이 됩니다. 이를 위해 다음 코드 블록을 사용할 수 있습니다.
Dim myArr As Variant
myArr = Application.Transpose(Application.Transpose(Range("A1:J1")))
실행 시 코드 문은 다음 결과를 생성합니다.
참고: 두 시나리오 모두에서 배열이 인덱스
0
대신 인덱스1
에서 시작한다는 것을 알 수 있습니다.Application.Transpose()
함수는 배열의 인덱스를 변경하지 않습니다.
최신 버전의 Microsoft Excel에서는 Application.Transpose()
기능의 수정된 버전을 사용한다는 점에 유의하는 것도 중요합니다.
Application.WorksheetFunction.Transpose()
는 최신 버전의 Microsoft Excel에서 Application.Transpose()
함수의 대안으로 사용됩니다.
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