시트 범위를 배열로 변환 :: Get_DB 명령문 사용법 총정리
엑셀 Get_DB 명령문 목차 바로가기
요약
엑셀 Get_DB 함수는 시트에서 사용 중인 범위를 배열로 변환하는 함수입니다. 시트의 값은 반드시 A1셀에서 시작해야 합니다.
명령문 구문
Array = Get_DB ( 시트, [ID없음], [머릿글포함] )
사용된 인수 및 변수 알아보기
인수 | 설명 |
시트 [WorkSheet] |
배열로 변환할 시트 개체입니다. 사용중인 통합문서의 시트명으로 입력하려면, ThisWorkBook.WorkSheets("시트명") 으로 입력합니다. |
ID없음 [Boolean, 선택인수] |
머릿글 우측에 신규 ID값이 없을 경우 TRUE로 입력합니다. 기본값은 FALSE 입니다. |
머릿글포함 [Boolean, 선택인수] |
TRUE일 경우 배열에 머릿글을 포함합니다. 기본값은 FALSE 입니다. |
예제파일 다운로드
오빠두엑셀의 강의 예제파일은 여러분을 위해 자유롭게 제공하고 있습니다.
- [엑셀VBA함수] Get_DB 명령문예제파일
상세 설명
엑셀 Get_DB 함수는 지정한 시트에서 사용 중인 범위를 배열로 변환하는 사용자 지정 함수입니다. 많은 양의 데이터를 다루거나 엑셀로 관계형 DB 구축할 때 유용하게 사용할 수 있습니다. 만약 배열 내 특정 열을 참조하여 고유값을 반환하려면 Get_UniqueDB 함수를 사용합니다.
Get_DB 함수를 사용해서 시트 범위를 배열로 올바르게 변환하려면 몇가지 규칙을 지켜야 합니다.
Get_DB 함수에 사용되는 시트 데이터 관리 규칙 - 시트의 값은 반드시 A1셀부터 시작해야 합니다.
- 병합된 셀이 없어야 합니다.
- ID가 있을 경우 ID는 반드시 A열에 입력되어야 하며, Insert_Record 함수에 사용될 신규 ID는 머릿글 우측에 입력합니다.
- 머릿글은 반드시 1행에 입력되어야 합니다.
Get_DB 함수는 데이터베이스 관련 VBA 함수 중 하나입니다. 더 다양한 DB 관련 함수는 아래 링크를 참고해주세요.
실전 사용 예제
- 'DB'라는 시트의 데이터베이스를 배열로 반환
Dim Arr As Variant Arr = Get_DB(ThisWorkBook.WorkSheets("DB")
- 'DB'라는 시트의 데이터베이스를 머릿글을 포함하여 배열로 반환
Dim Arr As Variant Arr = Get_DB(ThisWorkBook.WorkSheets("DB",,TRUE)
시트 범위를 배열로 변환하는 함수, Get_DB 명령문 동작원리
Get_DB 명령문 전체 코드
Function Get_DB(WS As Worksheet, Optional NoID As Boolean = False, Optional IncludeHeader As Boolean = False) As Variant '############################################################### '오빠두엑셀 VBA 사용자지정함수 (https://www.oppadu.com) '수정 및 배포 시 출처를 반드시 명시해야 합니다. '■ Get_DB 함수 '■ 지정한 시트의 값을 배열로 반환합니다. 시트의 값은 반드시 A1셀에서 시작해야 합니다. 머릿글 우측으로 ID 값이 없을 경우 NoID를 TRUE로 사용합니다. '■ 사용방법 'Array = Get_DB(ThisWorkBook.WorkSheets("시트명"), TRUE) '▶ 인수 설명 '_____________WS : 배열로 변환할 시트 개체입니다. '_____________NoID : 머릿글 우측에 신규 ID값이 없을 경우, TRUE로 사용합니다. 기본값은 FALSE 입니다. '_____________IncludeHeader : True일 경우 배열에 머릿글을 포함합니다. 기본값은 FALSE 입니다. '############################################################### Dim cRow As Long Dim cCol As Long Dim offCol As Long If NoID = False Then offCol = -1 With WS cRow = .Cells(.Rows.Count, 1).End(xlUp).Row cCol = .Cells(1, .Columns.Count).End(xlToLeft).Column + offCol Get_DB = .Range(.Cells(2 + Sgn(IncludeHeader), 1), .Cells(cRow, cCol)) End With End Function
명령문 동작원리 단계별 알아보기
- 변수를 선언하고 기본값을 설정합니다.
Dim cRow As Long Dim cCol As Long Dim offCol As Long If NoID = False Then offCol = -1
- 시트에서 사용 중인 마지막 행 번호를 계산합니다.
With WS cRow = .Cells(.Rows.Count, 1).End(xlUp).Row
- 시트에서 사용 중인 마지막 열 번호를 계산합니다.
cCol = .Cells(1, .Columns.Count).End(xlToLeft).Column + offCol
- 시트 범위를 배열로 반환 후 함수를 종료합니다.
Get_DB = .Range(.Cells(2 + Sgn(IncludeHeader), 1), .Cells(cRow, cCol)) End With