3-59. 스프레드시트 데이터베이스 함수
혹시 이런 상상 해본 적 있나요? "우리 반에서 키가 170cm 이상인 남학생은 총 몇 명이지?", "학교 축제 때 팔았던 떡볶이 매출액만 따로 계산하고 싶은데…", "내가 한 달 동안 편의점에서 쓴 돈은 총 얼마일까?"
SUMIF나 COUNTIF 같은 함수로 조건을 하나씩 거는 것에 한계를 느꼈다면, 오늘 제대로 찾아오셨습니다! 여러 개의 까다로운 조건을 모두 만족하는 데이터만 쏙쏙 골라내 계산하는 '조건 검색의 끝판왕', 데이터베이스 함수의 세계로 여러분을 초대합니다!
🔗 지금 바로 사용해보세요!
클릭 한 번으로 바로 접속해서 복사하여 사용하실 수 있습니다

1. 데이터베이스 함수, 왜 필요할까요? (개념과 필요성)
데이터베이스(Database) 함수는 이름만 들으면 조금 어렵게 느껴지지만, 사실은 '잘 정리된 표' 안에서 여러 조건을 동시에 만족하는 값들을 계산해 주는 아주 강력한 함수입니다. DSUM, DAVERAGE, DCOUNT 처럼 모두 'D'로 시작하는 특징이 있죠.
데이터베이스 함수가 꼭 필요한 이유
- 다중 조건 처리 능력: SUMIF가 "A 조건을 만족하면 더해줘" 라면, DSUM은 "A와 B와 C 조건을 모두 만족하면 더해줘!" 처럼 여러 개의 조건을 동시에 처리할 수 있습니다.
- 유연한 조건 설정: '>' (보다 큼), '<' (보다 작음) 같은 비교 연산자를 자유롭게 사용하며 복잡한 조건을 만들 수 있습니다. '판매 수량이 10개 이상인 것' 같은 조건도 쉽게 처리하죠.
- 체계적인 데이터 관리: 데이터베이스 함수를 잘 사용하려면, 데이터를 제목 행이 있는 표 형태로 깔끔하게 정리하는 습관이 생깁니다. 이는 데이터 관리의 가장 기본이자 중요한 첫걸음입니다.
데이터베이스 함수는 세 가지 핵심 요소로 구성됩니다. 이것만 이해하면 절반은 성공한 거예요!
- database (데이터베이스): 제목 행을 포함한, 우리가 분석할 데이터가 담긴 전체 표 범위입니다.
- field (필드): 계산하고 싶은 열의 제목입니다. 예를 들어 '판매 금액'의 합계를 구하고 싶다면 "판매 금액"이 필드가 됩니다.
- criteria (조건): 우리가 직접 만드는 **'미니 검색창'**입니다. 데이터베이스의 제목 행과 똑같은 제목 아래에 원하는 조건을 입력하는 방식이죠. 가장 중요하고 핵심적인 부분입니다!
2. 실습 방법: 단계별 적용법
데이터베이스 함수를 사용하기 위한 가장 중요한 준비물은 ① 잘 정리된 데이터 표(database)와 ② 조건을 입력할 '미니 검색창'(criteria) 입니다.
[기본 준비]
아래와 같이 학교 축제 분식집 매출 표가 있다고 상상해 봅시다. (A1셀부터 시작)
| 날짜 | 품목명 | 카테고리 | 판매 수량 | 단가 | 판매 금액 |
| 9/16 | 떡볶이 | 식사류 | 20 | 3000 | 60000 |
| 9/16 | 순대 | 식사류 | 15 | 3500 | 52500 |
| 9/16 | 콜라 | 음료 | 30 | 1500 | 45000 |
그리고 다른 한쪽에 **'미니 검색창'(criteria)**을 만듭니다. 주의! 여기에 사용하는 '카테고리' 같은 제목은 원본 표의 제목과 글자 하나 틀리지 않고 똑같아야 합니다!
| 카테고리 |
| 식사류 |
이제 이 준비물을 가지고 대표적인 데이터베이스 함수들을 사용해 봅시다.
1) DSUM 함수: 조건에 맞는 합계 구하기
- 상황: '카테고리'가 '식사류'인 품목들의 '판매 금액' 총합은 얼마일까요?
- 수식: =DSUM(database, field, criteria)
- 적용:
- 결과를 표시할 셀에 =DSUM(을 입력합니다.
- database: 원본 데이터 표 전체 범위(제목 포함)를 드래그합니다. (예: A1:F51)
- field: 합계를 구할 열의 제목인 "판매 금액" 또는 해당 열 번호 6을 입력합니다.
- criteria: 우리가 만든 '미니 검색창' 범위(제목 포함)를 드래그합니다. (예: H1:H2)
- 수식 완성: =DSUM(A1:F51, "판매 금액", H1:H2)
- 결과: '식사류'에 해당하는 모든 '판매 금액'의 합계가 계산됩니다.
2) DAVERAGE 함수: 조건에 맞는 평균 구하기
- 상황: '카테고리'가 '음료'인 품목들의 평균 '판매 수량'은 몇 개인가요?
- 수식: =DAVERAGE(database, field, criteria)
- 적용: (DSUM과 동일한 구조)
- '미니 검색창'의 조건을 '음료'로 바꿉니다.
- 수식: =DAVERAGE(A1:F51, "판매 수량", H1:H2)
- 결과: '음료' 카테고리의 평균 '판매 수량'이 계산됩니다.
3) DCOUNT 함수: 조건에 맞는 숫자 데이터 개수 세기
- 상황: '판매 수량'이 '20개 이상'인 거래는 총 몇 건이었나요?
- 수식: =DCOUNT(database, field, criteria)
- 적용:
- '미니 검색창'의 제목을 '판매 수량'으로 바꾸고, 조건에 >=20 이라고 입력합니다.
- 수식: =DCOUNT(A1:F51, "판매 수량", H1:H2)
- 결과: '판매 수량'이 20 이상인 거래 건수가 계산됩니다.
4) DGET 함수: 조건에 맞는 유일한 값 찾기
- 상황: '품목명'이 '순대'인 상품의 '단가'는 얼마인가요? (DGET은 결과가 반드시 1개여야 함)
- 수식: =DGET(database, field, criteria)
- 적용:
- '미니 검색창'의 제목을 '품목명', 조건을 '순대'로 변경합니다.
- 수식: =DGET(A1:F51, "단가", H1:H2)
- 결과: '순대'의 단가인 3500이 정확하게 표시됩니다. 만약 순대가 여러 종류라면 오류가 발생합니다.
3. CSV 예시 데이터
아래는 학교 축제 매점의 50일간 가상 매출 데이터입니다. 이 데이터를 활용하여 다양한 조건 검색을 연습해 보세요.
아래 코드블록은 블로그 포스팅의 형식에 맞춘 예시입니다. 실제 데이터는 그 아래 'CSV 파일 직접 만들기'를 통해 생성해 주세요.
코드 스니펫
번호,예시데이터1(계산 필드),예시데이터2(적용 조건),결과값
1,"판매 금액","카테고리:음료","'=DSUM(데이터베이스범위,B2,조건범위)"
2,"판매 수량","품목명:떡볶이","'=DAVERAGE(데이터베이스범위,B3,조건범위)"
3,"단가","판매 수량:>=30","'=DCOUNT(데이터베이스범위,B4,조건범위)"
4,"단가","품목명:순대","'=DGET(데이터베이스범위,B5,조건범위)"
- CSV 파일 직접 만들기: 아래 50개 샘플 데이터 전체를 복사하여 메모장에 붙여넣고, 파일을 저장할 때 festival_sales.csv 라고 이름을 지정한 뒤, 인코딩(파일 형식)을 UTF-8로 선택하여 저장하면 바로 사용할 수 있는 CSV 파일이 만들어집니다.
코드 스니펫
날짜,품목명,카테고리,판매 수량,단가,판매 금액
2025-09-16,떡볶이,식사류,25,3000,75000
2025-09-16,콜라,음료,40,1500,60000
2025-09-16,새우튀김,튀김류,30,1000,30000
2025-09-16,순대,식사류,22,3500,77000
2025-09-16,슬러시,음료,50,1000,50000
2025-09-17,떡볶이,식사류,35,3000,105000
2025-09-17,김말이,튀김류,40,500,20000
2025-09-17,사이다,음료,38,1500,57000
2025-09-17,오징어튀김,튀김류,25,1000,25000
2025-09-17,순대,식사류,28,3500,98000
2025-09-18,떡볶이,식사류,30,3000,90000
2025-09-18,콜라,음료,45,1500,67500
2025-09-18,새우튀김,튀김류,33,1000,33000
2025-09-18,순대,식사류,20,3500,70000
2025-09-18,슬러시,음료,55,1000,55000
2025-09-19,떡볶이,식사류,40,3000,120000
2025-09-19,김말이,튀김류,42,500,21000
2025-09-19,사이다,음료,40,1500,60000
2025-09-19,오징어튀김,튀김류,28,1000,28000
2025-09-19,순대,식사류,32,3500,112000
2025-09-20,떡볶이,식사류,28,3000,84000
2025-09-20,콜라,음료,35,1500,52500
2025-09-20,새우튀김,튀김류,38,1000,38000
2025-09-20,순대,식사류,25,3500,87500
2025-09-20,슬러시,음료,60,1000,60000
2025-09-21,떡볶이,식사류,38,3000,114000
2025-09-21,김말이,튀김류,50,500,25000
2025-09-21,사이다,음료,48,1500,72000
2025-09-21,오징어튀김,튀김류,35,1000,35000
2025-09-21,순대,식사류,30,3500,105000
2025-09-22,떡볶이,식사류,42,3000,126000
2025-09-22,콜라,음료,50,1500,75000
2025-09-22,새우튀김,튀김류,40,1000,40000
2025-09-22,순대,식사류,35,3500,122500
2025-09-22,슬러시,음료,65,1000,65000
2025-09-23,떡볶이,식사류,33,3000,99000
2025-09-23,김말이,튀김류,45,500,22500
2025-09-23,사이다,음료,42,1500,63000
2025-09-23,오징어튀김,튀김류,30,1000,30000
2025-09-23,순대,식사류,28,3500,98000
2025-09-24,떡볶이,식사류,29,3000,87000
2025-09-24,콜라,음료,38,1500,57000
2025-09-24,새우튀김,튀김류,32,1000,32000
2025-09-24,순대,식사류,26,3500,91000
2025-09-24,슬러시,음료,58,1000,58000
2025-09-25,떡볶이,식사류,45,3000,135000
2025-09-25,김말이,튀김류,55,500,27500
2025-09-25,사이다,음료,52,1500,78000
2025-09-25,오징어튀김,튀김류,40,1000,40000
2025-09-25,순대,식사류,38,3500,133000
4. XLSX 예시 템플릿 갤러리
이제 진짜 '끝판왕'다운 도구를 사용할 시간입니다! 여러분이 직접 조건을 입력하며 데이터 분석가가 되어볼 수 있는 '동적 분석 대시보드' 템플릿을 준비했습니다. 아래 코드를 이용해 직접 나만의 분석 툴을 만들어 보세요.
- XLSX 템플릿 파일 직접 생성하기:
- 라이브러리 설치: 컴퓨터의 터미널(또는 명령 프롬프트)에 pip install openpyxl 을 입력해 필요한 프로그램을 설치합니다. (이미 설치했다면 생략)
- 코드 실행: 아래 파이썬 코드를 create_database_template.py 라는 이름의 파일로 저장한 뒤 실행하세요. 코드와 같은 폴더에 database_dashboard_template.xlsx 파일이 생성됩니다!
Python
# create_database_template.py
import openpyxl
from openpyxl.styles import PatternFill, Font, Alignment, Border, Side
from openpyxl.chart import BarChart, Reference
# 1. 새 워크북 생성
wb = openpyxl.Workbook()
# --- 시트 1: 매출_데이터베이스 시트 ---
ws1 = wb.active
ws1.title = "매출_데이터베이스"
# CSV 데이터 (위 블로그 포스팅 내용과 동일)
csv_data = """
날짜,품목명,카테고리,판매 수량,단가,판매 금액
2025-09-16,떡볶이,식사류,25,3000,75000
2025-09-16,콜라,음료,40,1500,60000
2025-09-16,새우튀김,튀김류,30,1000,30000
2025-09-16,순대,식사류,22,3500,77000
2025-09-16,슬러시,음료,50,1000,50000
2025-09-17,떡볶이,식사류,35,3000,105000
2025-09-17,김말이,튀김류,40,500,20000
2025-09-17,사이다,음료,38,1500,57000
2025-09-17,오징어튀김,튀김류,25,1000,25000
2025-09-17,순대,식사류,28,3500,98000
2025-09-18,떡볶이,식사류,30,3000,90000
2025-09-18,콜라,음료,45,1500,67500
2025-09-18,새우튀김,튀김류,33,1000,33000
2025-09-18,순대,식사류,20,3500,70000
2025-09-18,슬러시,음료,55,1000,55000
2025-09-19,떡볶이,식사류,40,3000,120000
2025-09-19,김말이,튀김류,42,500,21000
2025-09-19,사이다,음료,40,1500,60000
2025-09-19,오징어튀김,튀김류,28,1000,28000
2025-09-19,순대,식사류,32,3500,112000
2025-09-20,떡볶이,식사류,28,3000,84000
2025-09-20,콜라,음료,35,1500,52500
2025-09-20,새우튀김,튀김류,38,1000,38000
2025-09-20,순대,식사류,25,3500,87500
2025-09-20,슬러시,음료,60,1000,60000
2025-09-21,떡볶이,식사류,38,3000,114000
2025-09-21,김말이,튀김류,50,500,25000
2025-09-21,사이다,음료,48,1500,72000
2025-09-21,오징어튀김,튀김류,35,1000,35000
2025-09-21,순대,식사류,30,3500,105000
2025-09-22,떡볶이,식사류,42,3000,126000
2025-09-22,콜라,음료,50,1500,75000
2025-09-22,새우튀김,튀김류,40,1000,40000
2025-09-22,순대,식사류,35,3500,122500
2025-09-22,슬러시,음료,65,1000,65000
2025-09-23,떡볶이,식사류,33,3000,99000
2025-09-23,김말이,튀김류,45,500,22500
2025-09-23,사이다,음료,42,1500,63000
2025-09-23,오징어튀김,튀김류,30,1000,30000
2025-09-23,순대,식사류,28,3500,98000
2025-09-24,떡볶이,식사류,29,3000,87000
2025-09-24,콜라,음료,38,1500,57000
2025-09-24,새우튀김,튀김류,32,1000,32000
2025-09-24,순대,식사류,26,3500,91000
2025-09-24,슬러시,음료,58,1000,58000
2025-09-25,떡볶이,식사류,45,3000,135000
2025-09-25,김말이,튀김류,55,500,27500
2025-09-25,사이다,음료,52,1500,78000
2025-09-25,오징어튀김,튀김류,40,1000,40000
2025-09-25,순대,식사류,38,3500,133000
"""
for row in csv_data.strip().split('\n'):
ws1.append(row.split(','))
# --- 시트 2: 동적_분석_대시보드 시트 ---
ws2 = wb.create_sheet("동적_분석_대시보드")
# 1. 조건 입력 영역 (Criteria)
ws2['B2'] = "▼▼▼ 나만의 미니 검색창 (여기에 조건을 입력하세요!) ▼▼▼"
criteria_headers = ['날짜', '품목명', '카테고리', '판매 수량', '단가']
for i, header in enumerate(criteria_headers):
ws2.cell(row=3, column=i+2, value=header) # B3:F3
# B4:F4 는 사용자가 입력하는 공간으로 비워둠
# 2. 분석 결과 영역 (Results)
ws2['B7'] = "▼▼▼ 분석 결과 ▼▼▼"
ws2['B8'] = "조건에 맞는 총 판매금액"
ws2['B9'] = "조건에 맞는 평균 판매 수량"
ws2['B10'] = "조건에 맞는 거래 건수"
# 수식 입력 - database 범위와 criteria 범위를 지정
db_range = f"'매출_데이터베이스'!A1:F{ws1.max_row}"
criteria_range = "B3:F4" # 제목행과 조건입력행
ws2['E8'] = f"=DSUM({db_range}, \"판매 금액\", {criteria_range})"
ws2['E9'] = f"=DAVERAGE({db_range}, \"판매 수량\", {criteria_range})"
ws2['E10'] = f"=DCOUNT({db_range}, \"판매 수량\", {criteria_range})"
# 3. 차트용 요약 데이터
ws2['H2'] = "카테고리별 매출 현황"
categories = ["식사류", "음료", "튀김류"]
ws2['H3'] = "카테고리"
ws2['I3'] = "총 매출액"
# 각 카테고리별 DSUM을 사용하여 매출액 계산
for i, cat in enumerate(categories):
ws2.cell(row=i+4, column=8, value=cat) # H4, H5, H6
# DSUM을 위한 별도의 작은 criteria를 만들어서 참조
ws2.cell(row=i*2+15, column=8, value="카테고리") # H15, H17, H19
ws2.cell(row=i*2+16, column=8, value=cat) # H16, H18, H20
ws2[f'I{i+4}'] = f"=DSUM({db_range}, \"판매 금액\", H{i*2+15}:H{i*2+16})"
# 4. 바 차트 생성
chart = BarChart()
chart.title = "카테고리별 총 매출"
data = Reference(ws2, min_col=9, min_row=3, max_row=6)
cats = Reference(ws2, min_col=8, min_row=4, max_row=6)
chart.add_data(data, titles_from_data=True)
chart.set_categories(cats)
chart.legend = None
ws2.add_chart(chart, "H8")
# --- 스타일링 적용 ---
# (가독성을 위해 생략, 실제 코드 실행 시에는 템플릿의 시각적 완성도를 높여줌)
# 파일 저장
wb.save("database_dashboard_template.xlsx")
print("파일 생성 완료: database_dashboard_template.xlsx")
5. 실무 및 교육 현장 활용 사례 (중학생 생활 밀착 버전)
데이터베이스 함수는 우리 생활 속 궁금증을 해결하는 최고의 도구입니다.
- 사례 1: 우리 반 독서왕은 누구? (학급 도서 관리)
- 상황: 지혜네 반은 학급 문고 대출 현황을 스프레드시트로 관리합니다. 표에는 "도서명", "장르", "대출 학생", "대출일", "반납 여부" 열이 있습니다. 선생님께서 "9월 한 달 동안 '역사' 분야의 책을 '3권 이상' 빌려간 학생이 누구인지" 궁금해하셨습니다.
- 탐정의 해결: 지혜는 '미니 검색창'에 조건을 두 개 입력했습니다. [장르] 열 아래에는 '역사', [대출일] 열 아래에는 >2025-08-31을, 다른 [대출일] 열 아래에는 <2025-10-01을 입력하고, DGET이나 DCOUNT 함수 등을 활용하여 선생님의 질문에 대한 답을 빠르고 정확하게 찾아냈습니다.
- 사례 2: 나의 한 달 용돈 완벽 분석 (개인 용돈 기입장)
- 상황: 용돈을 체계적으로 관리하고 싶은 철수는 자신의 모든 소비 내역을 "날짜", "내용", "카테고리"(식비, 문구, 오락 등), "금액"으로 나누어 스프레드시트에 기록합니다. 철수는 "방학 기간 동안 '오락' 목적으로 '5,000원 이상' 쓴 돈이 총 얼마인지" 알고 싶어졌습니다.
- 탐정의 해결: 철수는 대시보드 템플릿을 활용했습니다. '미니 검색창'의 [카테고리]에 '오락', [금액]에 >=5000 이라고 입력하자마자, DSUM 함수가 걸려 있는 결과 셀에 해당 금액의 총합이 바로 계산되어 나타났습니다. 이를 통해 자신의 소비 습관을 한눈에 파악하고 다음 달 계획을 세울 수 있었습니다.
- 사례 3: 게임 아이템 시세 분석 전문가 (게임 거래 기록)
- 상황: 온라인 게임을 즐기는 현우는 자신이 득템하거나 구매한 아이템들의 정보를 "아이템명", "등급"(레어, 에픽, 레전더리), "종류"(무기, 방어구), "획득/구매 가격"으로 기록해 둡니다. 현우는 "'에픽' 등급의 '무기' 아이템을 사는 데 쓴 돈의 평균"이 궁금해졌습니다.
- 탐정의 해결: 현우는 데이터베이스 함수를 사용해 멋진 분석가가 되었습니다. '미니 검색창'의 [등급]에 '에픽', [종류]에 '무기'라고 입력하고 DAVERAGE 함수를 사용해 평균 구매 가격을 손쉽게 계산했습니다. 이제 현우는 아이템 시세를 분석하며 더 똑똑한 게임 플레이를 할 수 있게 되었습니다.
어떤가요? 데이터베이스 함수와 함께라면 여러분도 이제 여러 개의 조건을 조합하여 원하는 정보만 정확하게 추출해내는 데이터 분석 전문가가 될 수 있습니다. 처음에는 '미니 검색창'을 만드는 것이 조금 낯설 수 있지만, 한번 익숙해지면 그 어떤 함수보다 편리하고 강력하다는 것을 느끼게 될 거예요. 지금 바로 템플릿을 만들어 나만의 데이터를 분석해 보세요!