- 최초 작성일: 1999-10-23
- 최종 수정일: 2026-09-29
- 조회수: 22 회
- 작성자: 권현욱 (엑셀러)
- 강의 제목: DSUM 함수Ⅱ와 콤보박스 활용
들어가기 전에
오래 전 엑셀 파일로 진행하던 강의를 웹 글로 복원한 것이라, "버튼을 눌러보세요"처럼 엑셀에서 직접 조작하라는 표현이 남아 있을 수 있습니다. 결과는 본문의 그림이나 표로 확인하실 수 있으며, 현재와 맞지 않는 내용은 보완하되 전반적인 스타일은 당시의 갬성(?)을 유지했습니다.
HELP DESK에 올라와 있는 지난 강좌파일들을 보시고는, "이 많은 걸 언제 다 살펴본담?" 하시는 분들이 있으신 것 같습니다. 어디갔다 이제들 오셨는지 … ^^
강좌순서에 너무 구애받지 마시기 바랍니다.
강좌회수에 연연하지 말고 아무 회나 보고싶은 것부터 먼저 보셔도 전혀 상관이 없습니다.
본 강좌는 Exceller가 알고있는 내용들을 최대한 이해하기 쉽도록 풀이해서 올리는 것입니다. 아마 이렇게 자세하게, Step By Step으로, 그리고 철저히 사례 위주로 설명해 놓은 책은 없을 것입니다.
그만큼 훌륭한 강의(또 잘난체를 하지요?)이니 이제 막 입문하시려는 분도 차근차근 따라오시기 바랍니다.
지난 강좌에서 Dsum, Dcount 함수에 대해 설명을 드렸지요?
기본적인 원리를 알았으니 이제 응용을 해서 자동화 시켜 보도록 하겠습니다.
오늘 강좌만 잘 소화하시면,
① Dsum, Dcount, Index 함수
② 콤보박스의 기능 및 활용방법
등을 완전히 내것으로 만드실 수 있게 됩니다. 부분적으로 막히는 곳이 있더라도 일단은 끝까지 두세번 정도만 따라해 보세요.
DSUM 함수Ⅱ와 콤보박스 활용
핵심 요약
- 콤보박스의 입력 범위와 셀 연결을 설정해 선택 항목을 번호 값으로 전달합니다.
- INDEX 함수로 연결 셀의 번호를 실제 지점명·팀장명·담당명 등의 문자열로 변환해 조건 테이블에 전달합니다.
- DSUM으로 선택된 조건에 맞는 목표와 실적을 계산하면 VBA 없이도 드롭다운 선택에 따라 결과가 바뀌는 요약 화면을 만들 수 있습니다.
기본 소스테이블은 어제 것을 그대로 씁니다.
| 지점명 | 팀장명 | 담당명 | 팀원명 | 목표금액 | 판매금액 |
| 강동 | 심정수 | 이순신 | 이선형 | 10,000,000 | 11,000,000 |
| 강동 | 심정수 | 이순신 | 이선형 | 10,000,000 | 9,500,000 |
| 강동 | 심정수 | 이순신 | 이선형 | 10,000,000 | 8,800,000 |
| 강동 | 심정수 | 김한수 | 김한나 | 10,000,000 | 13,500,000 |
| 강동 | 심정수 | 김한수 | 김한나 | 10,000,000 | 8,950,000 |
| 강동 | 심정수 | 김한수 | 김한나 | 10,000,000 | 13,690,000 |
| 강동 | 심정수 | 김한수 | 김한나 | 10,000,000 | 9,090,000 |
| 강서 | 조만수 | 김막동 | 박지원 | 15,000,000 | 18,000,000 |
| 강서 | 조만수 | 김막동 | 박지원 | 15,000,000 | 15,300,000 |
| 강서 | 조만수 | 김막동 | 박지원 | 15,000,000 | 8,800,000 |
| 강서 | 조만수 | 조물주 | 조수지 | 15,000,000 | 9,090,000 |
| 강서 | 조만수 | 조물주 | 조수지 | 15,000,000 | 20,000,000 |
| 강서 | 조만수 | 조물주 | 조수지 | 15,000,000 | 17,320,000 |
| 강서 | 조만수 | 조물주 | 조수지 | 15,000,000 | 13,000,000 |
| 강남 | 백재현 | 구민식 | 강수지 | 13,500,000 | 13,000,000 |
| 강남 | 백재현 | 구민식 | 강수지 | 13,500,000 | 12,000,000 |
| 강남 | 백재현 | 구민식 | 강수지 | 13,500,000 | 14,000,000 |
| 강남 | 백재현 | 구민식 | 김나리 | 13,500,000 | 13,500,000 |
| 강남 | 백재현 | 구민식 | 김나리 | 13,500,000 | 20,000,000 |
| 강남 | 백재현 | 김유신 | 김나리 | 13,500,000 | 14,400,000 |
| 강남 | 백재현 | 김유신 | 김나리 | 13,500,000 | 12,900,000 |
| 강남 | 백재현 | 김유신 | 김나리 | 13,500,000 | 13,131,000 |
| 강남 | 백재현 | 김유신 | 강수연 | 13,500,000 | 12,580,000 |
| 강북 | 김찬팔 | 김춘추 | 강수연 | 17,000,000 | 19,653,000 |
| 강북 | 김찬팔 | 김춘추 | 강수연 | 11,000,000 | 10,000,000 |
| 강북 | 김찬팔 | 김춘추 | 강수연 | 10,000,000 | 10,000,000 |
| 강북 | 김찬팔 | 김춘추 | 강수연 | 8,000,000 | 10,000,000 |
| 강북 | 김찬팔 | 홍사용 | 박세리 | 17,000,000 | 20,000,000 |
| 강북 | 김찬팔 | 홍사용 | 박세리 | 17,000,000 | 7,890,000 |
| 강북 | 김찬팔 | 홍사용 | 박세리 | 17,000,000 | 18,000,000 |
| 강북 | 김찬팔 | 홍사용 | 박세리 | 9,000,000 | 10,000,000 |
(1) 아래처럼 각 조건 필드의 내용들을 중복되지 않게 모두 적어 둡니다. 이것은 콤보박스의 "입력범위" 지정시 사용하기 위한 것입니다.
| 강동 | 심정수 | 이순신 | 이선형 |
| 강서 | 조만수 | 김한수 | 김한나 |
| 강남 | 백재현 | 김막동 | 박지원 |
| 강북 | 김찬팔 | 조물주 | 조수지 |
| 구민식 | 강수지 | ||
| 김유신 | 김나리 | ||
| 김춘추 | 강수연 | ||
| 홍사용 | 박세리 |
참고: 원문에서 원본 표의 머리글은 팀원명인데 이 조건 표의 머리글은 SM명으로 되어 있습니다. 조건 표의 머리글은 원본 표의 필드명과 같아야 하므로, 실제로 적용하실 때에는 서로 일치시켜 주시기 바랍니다.
(2) 그 다음, 조건테이블을 만듭니다. 원본 데이터의 Header부분을 복사해서 사용하면 되겠지요?
| 지점명 | 팀장명 | 담당명 | SM명 | 목표금액 | 판매금액 |
참고: 양식 도구모음은 구버전 기준입니다. 최신 Excel에서는 개발 도구 탭의 삽입에서 양식 컨트롤의 콤보 상자를 선택하며, 개발 도구 탭이 보이지 않으면 파일 - 옵션 - 리본 사용자 지정에서 체크합니다. 컨트롤 서식의 입력 범위와 셀 연결 방식은 지금도 같습니다.
(3) 양식도구모음 중에서 "콤보박스"를 하나 그려 넣습니다. "지점명" 아래의 셀 안에다가 그립니다.
자! 여기서부터는 정신 바짝 차리고 들으세요, 아니 보세요.
참고: 원문에서는 표 아래에 문단으로 분리되어 있던 강서와 2를, 본문 (3)의 설명(지점명 아래의 셀)에 따라 지점명 열의 콤보박스 표시값과 연결 셀 값으로 표에 넣었습니다.
| 지점명 | 팀장명 | 담당명 | SM명 | 목표금액 | 판매금액 |
| 강서 | |||||
| 2 |
(4) 마우스 포인터를 위의 콤보박스로 가져간 후, 오른쪽 버튼을 누르면 컨트롤 서식 대화상자가 나타나는데 각 항목을 그림처럼 설정합니다. (손으로 직접 입력하는 것보다는 마우스로 지정하시는 것이 좋겠지요?)
셀포인터를 B90 셀로 가져가 보면 아래와 같은 수식이 입력되어 있을 것입니다.
=INDEX(B49:B52,B67)
B49:B52는 위에서 지점명이 입력되어 있는 곳이고
B67은 "컨트롤 서식" 대화상자에서 "셀 연결"된 곳이지요.
그러므로 =index(b49:b52,b67)을 우리말로 해석하면, "전체 지점명 리스트 중에서 두번째 있는 지점명을 구하라" 이렇게 되겠지요?
이같은 방법으로 팀장명, 담당명, SM명 부분에 콤보상자를 아래와 같이 채워 넣습니다.
| 지점명 | 팀장명 | 담당명 | 팀원명 | 목표금액 | 판매금액 |
| 강남 | 조만수 | 김한수 | 박지원 | ||
| 3 | 2 | 2 | 3 |
| ① | 강남지점의 목표계: | 121,500,000 | 김한수담당의 목표계: | 40,000,000 | ||
| ② | 강남지점의 실적계: | 125,511,000 | 김한수담당의 실적계: | 45,230,000 | ||
| 강남지점의 달성율: | 1.0330123457 | 김한수담당의 달성율: | 1.13075 |
여기까지 되었으면 각 드롭다운 버튼을 눌러가며 검색결과값들이 어떻게 변하는지 잘살펴 보세요.
위 ①, ②에는 아래의 수식이 각각 들어 있습니다.
① =DSUM(B33:G64,F122,B122:B123)
② =DSUM(B33:G66,G122,B122:B123)
참고: 위 ①의 수식은 데이터베이스 범위가 B33:G64인데 ②의 수식은 B33:G66으로 적혀 있습니다. 원본 표는 33행부터 64행까지이므로 ②의 66행은 표 밖의 빈 행이며, 결과에는 영향이 없습니다.
드롭다운 버튼으로 값을 어떻게 지정하느냐에 따라 그에 상응하는 값들을 자동으로 추출해 주는 것입니다. 물론 각각의 조건들은 조합이 잘 맞아야 겠지요?
예를 들어, 강동에는 심정수 팀장밖에 없는데 "강동-조만수-이순신-이선형" 하는 식으로 조건을 주면 제대로 검색을 할 수 없는 노릇이지요.
분량이 좀 많습니다만 이번 강좌만 완전히 내 것으로 만들어 놓으면 웬만한 요약시트 정도는 즉석에서 만드실 수 있을 것입니다.
Visual Basic code를 한줄도 쓰지 않고 말입니다. 이것만 잘 이해하시면 한단계 도약입니다.
셀과 셀의 연결, 정보와 정보의 연결이 바로 프로그램의 핵심이자 컴퓨터의 가장 뛰어난 기능이라고 할 수 있습니다.
어느 자료가 어느 자료를 참조하여 그 값을 어디에 전해주고, 드롭다운 버튼을 통해 소스테이블을 참조하여 콤보박스의 리스트값을 생성하고 여기에서 선택된 리스트값이 숫자로 변환되어 값을 다시 다른 셀에 전달해 주고… 이 값을 가지고 인덱스 함수를 통해 문자열 정보로 변환시켜 검색테이블로 또 다시 넘겨주어 최종적으로 우리가 원하는 정보를 추출해 내는 것이지요.(말로 풀어 설명하니까 오히려 더 복잡하게 느껴지네요 ^^).
암튼 이것만 보아도 데이터가 서로 어떻게 링크(LINK) 되었는지, 몇 번이나 링크되었는지를 알 수가 있는 것입니다.
정보와 정보의 LINKING(연결)을 통한 부가가치 창출인 것입니다.
다음 시간에 또…
정리 — DSUM 함수Ⅱ와 콤보박스 활용
| 구분 | 내용 |
|---|---|
| 목적 | 콤보박스로 조건을 고르면 DSUM 결과가 자동으로 바뀌는 요약 시트를 VBA 없이 만들기 |
| 1단계 | 조건 필드별 내용을 중복 없이 나열해 콤보박스의 입력 범위로 사용 |
| 2단계 | 원본 표의 머리글을 복사해 조건 테이블 작성 |
| 3단계 | 양식 도구모음의 콤보박스를 지점명 아래 셀에 그리고 컨트롤 서식에서 입력 범위와 셀 연결 지정 |
| 변환 | =INDEX(B49:B52,B67) 연결 셀의 번호로 실제 지점명을 구함 |
| 집계 | =DSUM(B33:G64,F122,B122:B123) 조건 테이블 값에 맞는 목표금액 합계 |
| 예제 결과 | 강남지점 목표계 121,500,000, 실적계 125,511,000, 달성율 약 103.3% |
자주 묻는 질문 (FAQ)
Q1. 콤보박스에서 고른 항목은 어떻게 집계 조건이 되나요?
선택한 항목은 연결된 셀에 번호로 저장되고, INDEX 함수가 그 번호로 실제 지점명 같은 문자열을 구해 조건 테이블에 전달합니다. DSUM 함수가 이 조건에 맞는 값을 집계합니다.
Q2. 콤보박스의 입력 범위에는 무엇을 지정하나요?
각 조건 필드의 내용을 중복되지 않게 적어 둔 범위를 지정합니다.
Q3. VBA 없이 요약 시트를 만들 수 있나요?
Visual Basic 코드를 한 줄도 쓰지 않고 DSUM과 DCOUNT, INDEX 함수와 콤보박스만으로 만들 수 있습니다.
마치며
자주 보는 집계 화면은 콤보박스와 DSUM, INDEX 함수를 연결해 즉석에서 만들어 보시기 바랍니다. VBA에 대한 기초 지식을 공부하실 분은 아이엑셀러 닷컴 사이트 상단 메뉴에서 [Excel 강의] - [Excel 입문]을 먼저 보시면 이해하기 쉽습니다.