시트 내용을 Dictionary로 변환 :: Get_Dict 명령문 사용법
엑셀 Get_Dict 명령문 목차 바로가기
요약
엑셀 Get_Dict 함수는 시트 안에 입력된 데이터를 Dictionary 개체로 변환하는 사용자지정함수입니다.
시트 안에 입력된 데이터는 반드시 "A1"셀에서 시작되고 첫번째 필드는 고유값(ID)가 입력되어야 합니다.
명령문 구문
Dictionary = Get_Dict 시트
사용된 인수 및 변수 알아보기
인수 | 설명 |
시트 [WorkSheet] |
Dictionary 개체로 변환할 시트입니다. 시트 안에 입력된 데이터는 반드시 A1 셀부터 시작되고, 데이터의 첫번째 필드는 반드시 고유값(ID)이 입력되어야 합니다. |
예제파일 다운로드
오빠두엑셀의 강의 예제파일은 여러분을 위해 자유롭게 제공하고 있습니다.
- [엑셀VBA함수] Get_Dict 명령문 - 예제파일예제파일
상세 설명
엑셀 Get_Dict 함수는 시트 안에 입력된 데이터를 Dictionary 개체로 변환하는 사용자지정함수입니다. 시트의 데이터는 A1 셀에서 시작, 첫번째 필드는 고유값이 입력되어야 합니다. Dictionary 개체는 VBA에서 기본으로 활성화되지 않으므로, Early Binding으로 Dictionary를 사용하려면 Microsoft Scripting Runtime 라이브러리를 활성화 합니다.
VBA 편집기 - 도구 - 참조 에서 Scripting RunTime 라이브러리를 활성화합니다. 또는 Microsoft Scripting Runtime 라이브러리를 활성화하지 않고, CreateObject("Scripting.Dictionary") 로 Dictionary 개체를 선언하여 사용할 수도 있습니다. 하지만 Late Binding 으로 사용할 경우 명령문 작성시 개체의 속성과 함수가 자동으로 완성되지 않는 것에 주의해서 사용합니다.
LateBinding 할 경우 속성, 함수가 자동완성되지 않습니다. 실전 사용 예제
- 특정 시트의 모든 데이터를 Dictionary 개체로 변환
Dim Dict As Object Set Dict = Get_Dict(ThisWorkbook.Worksheets("시트명"))
- 시트 내용을 Dictionary로 변환 후, 특정 ID 에 해당하는 데이터를 배열로 반환
Dim Dict As Object Dim vArr As Variant Set Dict = Get_Dict(ThisWorkbook.Worksheets("시트명")) vArr = Dict(ID)
시트 내용을 Dictionary로 변환, Get_Dict 명령문 동작원리
Get_Dict 명령문 전체 코드
Function Get_Dict(WS As Worksheet) As Object '############################################################### '오빠두엑셀 VBA 사용자지정함수 (https://www.oppadu.com) '수정 및 배포 시 출처를 반드시 명시해야 합니다. '■ Get_Dict 함수 '■ 시트에 입력된 데이터를 Dictionary로 반환합니다. 첫번째 필드는 반드시 고유값이 입력되어야 합니다. '■ 사용방법 'Dictionary = Get_Dict(시트) '■ 인수 설명 '_____________WS : Dictionary로 변환할 시트입니다. '############################################################### Dim cRow As Long: Dim cCol As Long Dim Dict As Object Dim vArr As Variant Dim i As Long: Dim j As Long Set Dict = CreateObject("Scripting.Dictionary") With WS cRow = .Cells(.Rows.Count, 1).End(xlUp).Row cCol = .Cells(1, .Columns.Count).End(xlToLeft).Column For i = 1 To cRow ReDim vArr(1 To cCol - 1) For j = 2 To cCol vArr(j - 1) = .Cells(i, j) Next Dict.Add .Cells(i, 1).Value, vArr Next End With Set Get_Dict = Dict End Function
명령문 동작원리 단계별 알아보기
- 변수 선언 및 Dictionary 개체 설정
Dim cRow As Long: Dim cCol As Long Dim Dict As Object Dim vArr As Variant Dim i As Long: Dim j As Long Set Dict = CreateObject("Scripting.Dictionary")
- 시트에서 사용중인 데이터의 마지막 행/열 번호 반환
With WS cRow = .Cells(.Rows.Count, 1).End(xlUp).Row cCol = .Cells(1, .Columns.Count).End(xlToLeft).Column
- 첫번째필드는 Dictionary의 Key(=ID), 나머지 필드는 배열 형태로 Dictionary 값에 추가
For i = 1 To cRow ReDim vArr(1 To cCol - 1) For j = 2 To cCol vArr(j - 1) = .Cells(i, j) Next Dict.Add .Cells(i, 1).Value, vArr Next End With
- Get_Dict 함수 결과값으로 Dictionary 반환 후 함수 종료
Set Get_Dict = Dict
- 특정 시트의 모든 데이터를 Dictionary 개체로 변환