Excel에서 VBA 배열이란 무엇이며 프로그래밍하는 방법

VBA 는 수년 동안 Microsoft Office 제품군 의 일부였습니다 . 완전한 VB 응용 프로그램의 모든 기능과 성능을 가지고 있지는 않지만 VBAOffice 사용자에게 (Office)Office 제품을 통합하고 해당 제품에서 수행하는 작업을 자동화할 수 있는 유연성을 제공 합니다.

VBA 에서 사용할 수 있는 가장 강력한 도구 중 하나 는 전체 데이터 범위를 배열이라는 단일 변수에 로드하는 기능입니다. 이러한 방식으로 데이터를 로드하면 다양한 방식으로 해당 데이터 범위를 조작하거나 계산을 수행할 수 있습니다.

그렇다면 VBA 배열이란 무엇입니까? 이 기사에서 우리는 그 질문에 답하고 당신 자신의 VBA 스크립트(your own VBA script) 에서 그것을 사용하는 방법을 보여줄 것 입니다.

VBA 배열이란 무엇입니까?

Excel 에서 (Excel)VBA 배열을 사용하는 것은 매우 간단하지만 배열의 개념을 한 번도 사용해 본 적이 없다면 배열의 개념을 이해하는 것이 약간 복잡할 수 있습니다.

(Think)내부에 섹션이 있는 상자와 같은 배열을 생각하십시오 . 1차원 배열은 한 줄의 섹션이 있는 상자입니다. 2차원 배열은 두 줄의 섹션이 있는 상자입니다.

이 "상자"의 각 섹션에 원하는 순서대로 데이터를 넣을 수 있습니다.

VBA 스크립트 시작 부분에서 VBA 배열 을 정의하여 이 "상자"를 정의해야 합니다 . 따라서 한 세트의 데이터(1차원 배열)를 저장할 수 있는 배열을 만들려면 다음 줄을 작성합니다.

Dim arrMyArray(1 To 6) As String

나중에 프로그램에서 괄호 안의 섹션을 참조하여 이 배열의 모든 섹션에 데이터를 배치할 수 있습니다.

arrMyArray(1) = "Ryan Dube"

다음 줄을 사용하여 2차원 배열을 만들 수 있습니다.

Dim arrMyArray(1 To 6,1 to 2) As Integer

첫 번째 숫자는 행을 나타내고 두 번째 숫자는 열을 나타냅니다. 따라서 위의 배열은 6개의 행과 2개의 열이 있는 범위를 보유할 수 있습니다.

다음과 같이 데이터가 있는 이 배열의 모든 요소를 ​​로드할 수 있습니다.

arrMyArray(1,2) = 3

이렇게 하면 셀 B1에 3이 로드됩니다.

배열은 문자열, 부울, 정수, 부동 소수점 등과 같은 일반 변수로 모든 유형의 데이터를 보유할 수 있습니다.

괄호 안의 숫자도 변수가 될 수 있습니다. 프로그래머는 일반적으로 For 루프(Loop) 를 사용하여 배열의 모든 섹션을 계산하고 스프레드시트의 데이터 셀을 배열로 로드합니다. 이 문서의 뒷부분에서 이 작업을 수행하는 방법을 볼 수 있습니다.

Excel에서 VBA 배열을 프로그래밍하는 방법

스프레드시트에서 다차원 배열로 정보를 로드할 수 있는 간단한 프로그램을 살펴보겠습니다.

예를 들어 제품 판매 스프레드시트에서 판매 담당자의 이름, 품목 및 총 판매액을 가져오려는 경우를 살펴보겠습니다.

VBA 에서 행이나 열을 참조할 때 행과 열(rows and columns) 은 왼쪽 상단에서 1부터 계산합니다. 따라서 rep 열은 3, item 열은 4, total 열은 7입니다.

이 세 개의 열을 11개 행 모두에 로드하려면 다음 스크립트를 작성해야 합니다.

Dim arrMyArray(1 To 11, 1 To 3) As String
Dim i As Integer, j As Integer
For i = 2 To 12
For j = 1 To 3
arrMyArray(i-1, j) = Cells(i, j).Value
Next j
Next i

헤더 행을 건너뛰려면 첫 번째 For look의 행 번호가 1이 아닌 2에서 시작해야 합니다. 즉, 셀 값을 로드할 때 배열 행 값에 대해 1을 빼야 합니다. Cells (i, j).Value 를 사용하여 배열에 넣습니다 .

VBA 배열 스크립트(Your VBA Array Script) 를 삽입할 위치

VBA 스크립트를 Excel 에 배치하려면 VBA 편집기 를 사용해야 합니다 . 개발자(Developer) 메뉴를 선택 하고 리본 의 컨트롤 섹션에서 (Controls)코드 보기(View Code) 를 선택하여 액세스할 수 있습니다 .

메뉴에 개발자(Developer) 가 표시되지 않으면 추가해야 합니다. 이렇게 하려면 파일(File)옵션(Options) 을 선택 하여 Excel 옵션 창을 엽니다.

선택 명령을 드롭다운에서 모든 명령(All Commands) 으로 변경합니다 . 왼쪽 메뉴에서 개발자(Developer) 를 선택 하고 추가(Add) 버튼을 선택하여 오른쪽 창으로 이동합니다. 확인란을 선택하여 활성화하고 확인(OK) 을 선택하여 완료합니다.

코드 편집기(Code Editor) 창이 열리면 왼쪽 창에서 데이터가 있는 시트가 선택되어 있는지 확인합니다. 왼쪽 드롭다운에서 워크시트(Worksheet) 를 선택 하고 오른쪽에서 활성화(Activate) 를 선택합니다. 그러면 Worksheet_Activate(Worksheet_Activate) () 라는 새 서브루틴이 생성됩니다 .

이 기능은 스프레드시트 파일이 열릴 때마다 실행됩니다. 이 서브루틴 내부의 스크립트 창에 코드를 붙여넣습니다.

이 스크립트는 12개 행에서 작동하며 3열에서 담당자 이름, 4열에서 항목, 7열에서 총 판매액을 로드합니다.

두 For 루프가 모두 끝나면 2차원 배열 arrMyArray에는 원본 시트에서 지정한 모든 데이터가 포함됩니다.

Excel VBA에서 배열 조작

모든 최종 판매 가격에 5%의 판매세를 적용하고 모든 데이터를 새 시트에 쓴다고 가정해 보겠습니다.

결과를 새 시트에 쓰는 명령을 사용하여 첫 번째 루프 다음에 또 다른 For 루프를 추가하여 이를 수행할 수 있습니다.

For k = 2 To 12
Sheets("Sheet2").Cells(k, 1).Value = arrMyArray(k - 1, 1)
Sheets("Sheet2").Cells(k, 2).Value = arrMyArray(k - 1, 2)
Sheets("Sheet2").Cells(k, 3).Value = arrMyArray(k - 1, 3)
Sheets("Sheet2").Cells(k, 4).Value = arrMyArray(k - 1, 3) * 0.05
Next k

이렇게 하면 전체 배열이 Sheet2 로 "언로드" 되며, 추가 행에는 세금 금액에 대해 5%를 곱한 합계가 포함됩니다.

결과 시트는 다음과 같습니다.

보시다시피 Excel의 VBA (Excel)배열(VBA)다른 Excel 트릭(any other Excel trick) 만큼 매우 유용하고 다양합니다 . 

위의 예는 배열에 대한 매우 간단한 사용입니다. 훨씬 더 큰 배열을 생성하고 배열에 저장한 데이터에 대해 정렬, 평균화 또는 기타 여러 기능을 수행할 수 있습니다.

실제 창의력을 발휘하려면 두 개의 다른 시트에서 셀 범위를 포함하는(containing a range of cells) 두 개의 배열을 만들고 각 배열의 요소 간에 계산을 수행할 수도 있습니다.

응용 프로그램은 당신의 상상력에 의해서만 제한됩니다.



About the author

저는 프리웨어 소프트웨어 개발자이자 Windows Vista/7 옹호자입니다. 팁과 트릭, 수리 가이드, 모범 사례를 포함하여 운영 체제와 관련된 다양한 주제에 대해 수백 편의 기사를 작성했습니다. 또한 회사인 헬프 데스크 서비스를 통해 사무실 관련 컨설팅 서비스를 제공합니다. Office 365의 작동 방식, 기능 및 가장 효과적으로 사용하는 방법을 깊이 이해하고 있습니다.



Related posts