• 최초 작성일: 1999-10-06
  • 최종 수정일: 2026-09-29
  • 조회수: 27 회
  • 작성자: 권현욱 (엑셀러)
  • 강의 제목: DGET 함수

들어가기 전에

오래 전 엑셀 파일로 진행하던 강의를 웹 글로 복원한 것이라, "버튼을 눌러보세요"처럼 엑셀에서 직접 조작하라는 표현이 남아 있을 수 있습니다. 결과는 본문의 그림이나 표로 확인하실 수 있으며, 현재와 맞지 않는 내용은 보완하되 전반적인 스타일은 당시의 갬성(?)을 유지했습니다.

몇번째 강좌였는지 정확히 기억나진 않지만(20몇회 정도 된 것 같기도 하고…) vlookup()함수에 대해 설명을 드린 적이 있습니다. 또 생소하시지요? 한 것 같기도 하고 아닌 것 같기도 하고…

또 복습하지요 뭐.

권현욱(엑셀러)
저자: 권현욱(엑셀러), 아이엑셀러 대표

필자는 Excel 컨설턴트, 작가, 그리고 크리에이터입니다. 현재 Microsoft Excel MVP이며, 『챗GPT+엑셀 업무자동화 정석』을 비롯한 10여 권의 도서를 집필했습니다. Excel 자동화 및 생산성 향상 분야에서 25년 넘는 경력을 보유하고 있습니다.

권현욱(엑셀러) 님의 최신 포스트:
  • 최신 글을 불러오는 중...


26년 경력 Microsoft MVP 권현욱(엑셀러) 지음

📊 신간 전자책(PDF) · 287쪽 · 13500원

엑셀 대시보드를 만드는 최적의 '표준 3계층 구조'

  • 3초 안에 읽히는 화면 설계 감각 습득
  • Microsoft Excel MVP의 실전 노하우 수록
  • 중간마진 없는 합리적인 가격, 오직 아이엑셀러에서만!
지금 구매하기 완성 화면 보기

DGET 함수

핵심 요약

  • VLOOKUP은 첫 번째 일치 항목을 찾는 데 적합하지만 여러 조건을 동시에 적용하기에는 제약이 있습니다.
  • DGET은 데이터베이스 범위·필드·조건 범위를 지정해 조건을 만족하는 하나의 레코드 값을 반환합니다.
  • 조건 범위를 바꾸면 학력·급여액·입사일자처럼 같은 레코드의 여러 필드 값을 함께 조회할 수 있습니다.

아래와 같은 표가 있습니다.

제품코드 제품명 당월판매 누계판매
11065-0013 마몽드에버스킨 14,559 57,096
11065-0033 마몽드에버로션 19,712 72,667
11065-0063 마몽드에버아스트린 9,530 28,938
11065-0078 마몽드에버모크림 9,943 48,785
11066-0654 미스토픽코팅에센스 4,248 9,634
11066-1648 미스토픽스프레이3 19,728 49,564
11066-1649 미스토픽스프레이13 14,850 54,035
11066-1650 미스토픽스프레이23 24,223 44,227
11066-1654 미스토픽스프레이33 19,539 19,539
11066-1657 미스토픽트리트로션 410 4,710
11067-0751 미스쾌에버로션 10,202 29,176
11067-0757 미스쾌에버스킨 10,012 29,673
11090-0035 베리떼화로션 1,496 4,797
11090-0048 베리떼프레쉬마스크 230 14,600
11090-0075 베리떼UV화크림 1,739 17,000
11093-0869 레쎄UV그린2종 9,369 58,011
11097-0013 라네즈UV그소프너 19,000 52,533
11097-0024 라네즈아이리프팅시럼 9,985 14,478

이런 표가 있을 때, 제품코드만 탁 치면 제품명, 당월판매, 누계판매가 같이 표시된다면 편리할 때가 있겠지요? 즉 조견표와 같이 말입니다. 이런 기능을 수행하는 것이 vlookup()함수 입니다.

제품코드 조회

제품코드 11066-1648
제품명 미스토픽스프레이3 =VLOOKUP($C$33,$B$9:$E$26,2,FALSE)
당월판매 19,728 =VLOOKUP($C$33,$B$9:$E$26,3,FALSE)
누계판매 49,564 =VLOOKUP($C$33,$B$9:$E$26,4,FALSE)

공식을 잘 들여다 보시면 이해가 가실 것입니다. 빨간 네모 친 부분만 바뀌었지요.

여기까지 설명을 드렸는데 작지만 날카로운 눈을 가진 어떤 분이 이런 질문을 해 오셨습니다.

"vlookup()함수는 조건을 만족하는 한 자료만 찾아주는 것이 아니냐? 두가지 이상의 조건을 입력 받아서 두가지 이상의 결과값을 동시에 리턴해 주는 방법은 없느냐?"는 질문을 말입니다.

물론 있습니다. Visual basic code를 짜면 더 쉽게 해결이 되겠지만 여기서는 엑셀의 함수를 사용해서 해결해 보도록 하지요.

아래의 예를 보세요

사원이름 소속 학력 급여액 입사일자
이순신 총무과 대졸 1,000,000 1995-01-01
김유신 마케팅실 대졸 1,500,000 1993-06-01
임걱정 판촉과 대졸 1,350,000 1994-01-30
강감찬 강남지점 대졸 950,000 1996-07-01
조물주 강서지점 고졸 900,000 1997-01-01
김찬팔 총무과 고졸 900,000 1995-03-01
돌팔이 강동지점 대졸 1,350,000 1994-10-15
최영 마케팅실 대졸 2,000,000 1990-01-01
안록산 강북지점 대졸 2,300,000 1988-10-01
사사명 복지과 대졸 18,000,000 1995-07-10
연개소문 구매과 고졸 800,000 1993-06-20
이순신 기획팀 대졸 1,250,000 1997-03-15
김유신 인사과 대졸 1,000,000 1993-06-01
김춘추 조달과 대졸 1,500,000 1990-06-20
관창 경리과 대졸 2,000,000 1989-06-30

표를 살펴보니 이순신, 김유신이라는 이름을 가진 사람이 각각 2명씩 있지요? 이런 경우에 vlookup()함수를 쓰면 어떻게 될까요? 맨 첫번째 조건을 만족하는 하나의 이름만 계속 찾게 되겠지요? 이것은 우리가 찾고자 하는 값과는 거리가 있는 것이고요.

그러므로 첫번째 조건과 두번째 조건을 동시에 만족하도록 하는 방법을 찾아야 할 것입니다.

요렇게 조건을 입력받으면

사원이름 이순신
소속 기획팀

이와 같은 결과를 얻고 싶다는 질문입니다. 즉 "어느 부서의 누구"까지를 함께 지정하여 원하는 자료를 검색하겠다는 것이지요.

학력 대졸
급여액 12,500,000
입사일자 1997-03-15

참고: 위 표의 급여액은 12,500,000으로 되어 있으나, 앞의 사원 표에서 기획팀 이순신의 급여액과 뒤에 나오는 DGET 결과는 모두 1,250,000입니다. 원문 그대로 두었으며 1,250,000의 오기로 보입니다.

아래의 방법으로 하시면 됩니다.

(1) 검색테이블을 일단 아래와 같이 만든 후 조건을 아래와 같이 입력합니다.

사원이름 소속 학력 급여액 입사일자
이순신 기획팀

(2) =dget까지 입력한 후 Ctrl + A키를 탁 치세요(오랜만에 사용하지요? 안 잊으셨을래나…)

DGET 함수 예제 화면 1
아이엑셀러

대화상자가 나타나는데 보니까 세가지 인수로 구성되어 있지요?

① Database: 테이블 전체, 즉 소스 데이터 전체의 범위를 지정해 줍니다

② Field: 찾고자 하는 필드를 지정합니다.(여기서는 학력, 급여액, 입사일자 등)

③ Criteria: 검색조건을 지정해 줍니다. 즉 요부분이 되겠지요.

(3) 이렇게 해준 후 절대주소가 필요한 부분은 절대주소로 지정해 주고 공식을 아래로 복사하면 아래와 같은 결과가 나타나게 됩니다.

학력 대졸 =DGET($B$49:$F$64,B105,$B$81:$C$82)
급여액 1,250,000 =DGET($B$49:$F$64,B106,$B$81:$C$82)
입사일자 1997-03-15 =DGET($B$49:$F$64,B107,$B$81:$C$82)

검색조건 테이블만 하나 만들어 놓으면 원하는 데이터를 손쉽게 찾아낼 수가 있는 것입니다.

이 상태에서 조건 테이블의 조건만 바꾸어 주면 결과값도 연동되어 자동으로 변경됩니다.

즉 (1)의 검색테이블에서 소속을 총무과로 바꾸어 보세요(이순신이란 사람이 기획팀과 총무과에 각각 1명씩 있었지요?) 그러면 (3)의 결과값도 같이 변할 것입니다.

많은 분야에서 응용이 될 수 있을 것입니다. 완전히 이해하고 넘어가시도록…

참고로 dget()함수처럼 함수명 앞에 "d"가 붙는 것은 database용 워크시트 함수입니다.

데이터베이스용 워크시트 함수에는 이것 외에도 dcount(), dcounta(), dsum(), daverage(), dproduct(), … 등 여러가지가 있습니다.

정신없이 치다보니 하루치 분량치고는 좀 많네요…

정리 — DGET 함수

구분내용
주제VLOOKUP으로 해결되지 않는 두 가지 이상의 조건 검색을 DGET 함수로 해결
VLOOKUP제품코드를 입력하면 제품명, 당월판매, 누계판매를 조견표처럼 조회
한계이름이 같은 사람이 있으면 맨 처음 조건을 만족하는 자료만 계속 찾게 됨
DGET 인수Database는 표 전체 범위, Field는 찾고자 하는 필드, Criteria는 검색조건
조건 표사원이름과 소속을 함께 지정하여 같은 이름의 사람을 구분
특징조건 표의 조건만 바꾸면 결과값도 연동되어 자동으로 변경
D 함수dcount, dcounta, dsum, daverage, dproduct 등은 데이터베이스용 워크시트 함수

자주 묻는 질문 (FAQ)

Q1. VLOOKUP 함수의 한계는 무엇인가요?

조건을 만족하는 한 자료만 찾아 주므로, 같은 이름을 가진 사람이 여러 명이면 맨 처음 조건을 만족하는 자료만 계속 찾게 됩니다.

Q2. 두 가지 조건을 동시에 만족하는 자료를 찾으려면 어떻게 하나요?

조건 표에 사원이름과 소속을 함께 입력하고 DGET 함수의 Criteria 인수로 지정합니다. DGET 함수는 Database, Field, Criteria의 세 인수로 구성됩니다.

Q3. 조건 표의 조건을 바꾸면 결과는 어떻게 되나요?

결과값도 연동되어 자동으로 바뀝니다. 예를 들어 소속을 기획팀에서 총무과로 바꾸면 총무과 이순신의 자료가 나타납니다.

마치며

같은 값이 여러 개 있는 표에서 정확한 자료를 찾아야 할 때는 DGET 함수와 조건 표의 조합을 활용해 보시기 바랍니다. VBA에 대한 기초 지식을 공부하실 분은 아이엑셀러 닷컴 사이트 상단 메뉴에서 [Excel 강의] - [Excel 입문]을 먼저 보시면 이해하기 쉽습니다.