시트 범위를 배열로 변환 :: Get_DB 함수 사용법

지정한 시트에서 사용중인 범위를 배열로 반환하는 Get_DB 함수의 사용법 및 동작원리를 살펴봅니다.

작성자 :
오빠두엑셀
최종 수정일 : 2021. 05. 06. 04:41
URL 복사
메모 남기기 : (5)

시트 범위를 배열로 변환 :: Get_DB 명령문 사용법 총정리

엑셀 Get_DB 명령문 목차 바로가기
요약

엑셀 Get_DB 함수는 시트에서 사용 중인 범위를 배열로 변환하는 함수입니다. 시트의 값은 반드시 A1셀에서 시작해야 합니다.

명령문 구문
Array = Get_DB ( 시트, [ID없음], [머릿글포함] )
사용된 인수 및 변수 알아보기
인수 설명
시트
[WorkSheet]
배열로 변환할 시트 개체입니다. 사용중인 통합문서의 시트명으로 입력하려면, ThisWorkBook.WorkSheets("시트명") 으로 입력합니다.
ID없음
[Boolean, 선택인수]
머릿글 우측에 신규 ID값이 없을 경우 TRUE로 입력합니다. 기본값은 FALSE 입니다.
머릿글포함
[Boolean, 선택인수]
TRUE일 경우 배열에 머릿글을 포함합니다. 기본값은 FALSE 입니다.

예제파일 다운로드

오빠두엑셀의 강의 예제파일은 여러분을 위해 자유롭게 제공하고 있습니다.

상세 설명

엑셀 Get_DB 함수는 지정한 시트에서 사용 중인 범위를 배열로 변환하는 사용자 지정 함수입니다. 많은 양의 데이터를 다루거나 엑셀로 관계형 DB 구축할 때 유용하게 사용할 수 있습니다. 만약 배열 내 특정 열을 참조하여 고유값을 반환하려면 Get_UniqueDB 함수를 사용합니다.

Get_DB 함수를 사용해서 시트 범위를 배열로 올바르게 변환하려면 몇가지 규칙을 지켜야 합니다.

엑셀 GET_DB 함수 사용법
Get_DB 함수에 사용되는 시트 데이터 관리 규칙
  1. 시트의 값은 반드시 A1셀부터 시작해야 합니다.
  2. 병합된 셀이 없어야 합니다.
  3. ID가 있을 경우 ID는 반드시 A열에 입력되어야 하며, Insert_Record 함수에 사용될 신규 ID는 머릿글 우측에 입력합니다.
  4. 머릿글은 반드시 1행에 입력되어야 합니다.

Get_DB 함수는 데이터베이스 관련 VBA 함수 중 하나입니다. 더 다양한 DB 관련 함수는 아래 링크를 참고해주세요.

실전 사용 예제
  1. 'DB'라는 시트의 데이터베이스를 배열로 반환
    Dim Arr As Variant
    Arr = Get_DB(ThisWorkBook.WorkSheets("DB")
  2. '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
명령문 동작원리 단계별 알아보기
  1. 변수를 선언하고 기본값을 설정합니다.
    Dim cRow As Long
    Dim cCol As Long
    Dim offCol As Long
     
    If NoID = False Then offCol = -1
  2. 시트에서 사용 중인 마지막 행 번호를 계산합니다.
    With WS
        cRow = .Cells(.Rows.Count, 1).End(xlUp).Row
  3. 시트에서 사용 중인 마지막 열 번호를 계산합니다.
        cCol = .Cells(1, .Columns.Count).End(xlToLeft).Column + offCol
  4. 시트 범위를 배열로 반환 후 함수를 종료합니다.
        Get_DB = .Range(.Cells(2 + Sgn(IncludeHeader), 1), .Cells(cRow, cCol))
    End With
4.8 4 투표
게시글평점
5 댓글
Inline Feedbacks
모든 댓글 보기
5
0
여러분의 생각을 댓글로 남겨주세요.x