한국GPT협회 표준교재

914. 책 후기를 엑셀 셀 하나로 자동 분류·점수화하기

수백 건의 도서 후기를 Excel에 모은 뒤, VBA로 만든 =gpt() 함수로 OpenAI API를 직접 호출하여
감성 분류(긍정/부정)와 1~10점 정량 점수를 자동으로 채웁니다.
대상 산업 출판 · 커머스 · 콘텐츠
대상 직무 마케팅 · MD · 편집
사용 도구 Excel VBA · GPT API · MSXML2
결과물 감성 라벨 + 정량 점수

기존의 업무 범위와 방법

온라인 서점·자사몰·교사 커뮤니티에 흩어진 도서 후기는 매월 수백~수천 건 단위로 쌓입니다. 그러나 후기가 "데이터"로 활용되기 위해서는 누군가 한 줄씩 읽고 분류·점수화하는 정성 작업이 필요합니다.

PROBLEM 1한 줄씩 읽고 분류하는 정성 작업

후기 한 건당 1~2분, 수백 건이면 하루 종일이 소요됩니다. 도서별 비교·연간 추세 분석은 시작도 하기 어려운 작업량입니다.

PROBLEM 2정성 평가만 가능, 정량 비교 불가

"이 책은 호평이 많다"는 인상만 있고, "8.7점 vs 6.2점"처럼 도서·시리즈를 정량적으로 비교할 수 있는 지표가 없습니다.

PROBLEM 3분류 기준이 사람마다 다름

"좋지만 분량이 많다" 같은 혼합 후기를 누가 분류하느냐에 따라 긍정/부정이 갈립니다. 시점·담당자가 바뀌면 결과도 흔들립니다.

문제의 본질. 문제는 후기 수집이 아니라 "수집된 후기를 의사결정에 쓸 수 있는 데이터로 가공하는 단계"에서 발생합니다. 본 사례는 그 가공 단계를 LLM에 맡기고, 마케팅 담당자는 결과를 보고 판단만 하면 되도록 흐름을 다시 설계한 시도입니다.

AI 활용 방법

담당자가 이미 익숙한 Excel 환경 안에서, =SUM()·=VLOOKUP()처럼 =gpt() 함수를 사용하도록 만듭니다. 새로운 도구를 학습하지 않고, 한 줄의 수식만 입력하면 셀이 자동으로 GPT의 답으로 채워집니다.

① 데이터 수집
온라인 서점·자사몰에서 수집한 후기를 A열: 도서명, B열: 후기 본문 형식으로 한 시트에 정리합니다. 별도 DB나 BI 도구 없이 Excel 한 파일이면 충분합니다.
② gpt() 함수 등록
Alt+F11로 VBA 에디터를 열고 모듈 한 개에 gpt() 사용자 정의 함수(UDF)를 등록합니다. 이 함수가 셀에서 받은 프롬프트와 데이터로 OpenAI Chat API에 POST 요청을 보내고 응답 본문을 셀에 반환합니다.
③ 분류 + 정량화
C열에는 짧은 프롬프트로 감성 분류(긍정/부정)를, D열에는 10점 척도 기준이 자세히 명시된 긴 프롬프트로 만족도 점수(1~10)를 채웁니다. 같은 후기를 두 관점에서 동시에 평가합니다.
④ 일괄 처리
C2·D2 셀의 수식을 마지막 행까지 드래그하면 모든 후기가 자동으로 분류·점수화됩니다. 새 후기가 추가될 때마다 같은 방식으로 즉시 분석이 이어집니다.
설계 원칙. 사용자는 "수식 하나"만 알면 됩니다. API 호출·JSON 파싱·에러 처리는 모두 VBA 함수 안에 숨겨져 있고, 담당자는 평소 Excel을 쓰던 방식 그대로 셀에 함수를 입력하면 됩니다. 결과는 곧바로 피벗테이블·차트·필터로 이어 분석할 수 있습니다.

AI 활용 결과물

GPT 함수가 작동한 결과 화면

아래는 =gpt(...) 수식이 적용된 시트입니다. C열(감성)과 D열(점수)이 GPT 응답으로 자동 채워지고, 수식 입력줄에는 호출된 프롬프트가 그대로 보입니다.

08_커머스_책 후기_샘플.xlsm — C2: =gpt("이 독서 후기를 읽고, 고객의 감성분석을 하자. 출력 형식은 '긍정'과 '부정' 중 하나의 단어를 출력한다.", B2)
A 도서명B 독서 후기C 감성D 점수
Why? 인체과학초등 4학년 우리 아이가 6학년 동생과 함께 보는데, 그림이 자세하고 설명이 친근해서 어려운 의학 용어도 자연스럽게 익히게 됩니다. 강력 추천합니다.긍정10
큐브수학 초등 5-1수학 학원 다니지 않고 이 책 한 권으로 정리합니다. 한 단원당 분량이 적절해서 아이가 집중력을 잃지 않고 끝까지 풀 수 있어 만족합니다.긍정9
올리드 중학 영어1기대가 컸는데 실망이 컸습니다. 단원 평가 난이도가 갑자기 너무 높게 튀고, 해설은 너무 간단해서 아이가 혼자 채점하다가 결국 포기했어요. 환불 고민 중입니다.부정2
초등 국어 문해력 어휘 4학년친절한 설명은 좋지만 그만큼 분량이 늘어나서 진도가 빠른 학생에게는 다소 답답하게 느껴질 수 있습니다.긍정6
하이탑 고등 물리학Ⅰ그림은 좋은데 종이 질이 가벼워서 자주 보다 보니 모서리가 금방 닳아, 가격 대비 내구성이 조금 아쉽다는 느낌을 받았습니다.부정5
한국사 편지 1역사적 사건과 인물이 편지글 형태로 친근하게, 단순 연표 암기가 아니라 인물의 상황 중심으로 한국사를 이해할 수 있어 정말 좋습니다.긍정10

※ C2·D2 셀의 수식을 마지막 행까지 드래그하면 새 후기가 추가될 때마다 자동으로 분류·점수가 채워집니다.

100건 분석 결과 — 점수 분포

샘플 100건을 일괄 분석한 점수 분포입니다. GPT가 부여한 1~10점이 정성적 인상과 잘 맞고, 점수만으로 도서별·시리즈별 만족도를 한눈에 비교할 수 있게 됩니다.

2
4
6
5
7
8
11
14
18
25
1점2점3점4점5점6점7점8점9점10점
핵심 동작 흐름. ① 후기 데이터를 Excel A·B열에 입력 → ② C·D열에 =gpt(프롬프트, B2) 수식 입력 → ③ VBA 함수가 OpenAI API를 호출 → ④ 응답에서 본문만 추출해 셀에 반환 → ⑤ 수식 복사·드래그만으로 전체 후기 일괄 분석. 한 행이 분석되는 데 평균 1~2초가 소요됩니다.

업무자동화 효과

EFFECT 1하루 작업이 몇 분으로 단축

후기 한 건당 1~2초로 처리되어, 수백 건의 정성 분류 작업이 셀 드래그 한 번으로 끝납니다. 담당자는 결과 해석에 시간을 쓸 수 있습니다.

EFFECT 2일관된 기준의 정량 지표 확보

분류·점수 기준이 프롬프트에 명시되어 누가 돌려도 같은 결과가 나오고, 1~10점 척도로 도서·시리즈·시점별 만족도를 평균·분포로 비교할 수 있습니다.

EFFECT 3데이터 수집·분석 주기 단축

자동화로 데이터를 더 자주 확인하게 되면서, 업무를 점검하고 개선하는 사이클 자체가 빨라집니다. 데이터 기반의 업무 프로세스가 자연스럽게 정착됩니다.

확장성. 같은 =gpt() 함수는 도서 후기뿐 아니라, 고객센터 문의 분류, 설문 응답 요약, 제품 리뷰 키워드 추출, 영업 미팅 메모 요약 등 "열 단위 텍스트 데이터의 일괄 처리"가 필요한 모든 업무에 그대로 재사용할 수 있습니다. 프롬프트만 바꾸면 됩니다.

자동화 과정

전체 자동화는 "VBA 함수 한 개 + 셀 수식 두 종"으로 구성됩니다. 함수 코드는 한 모듈에 200줄 정도이며, 한 번 등록해두면 같은 통합문서 안에서 영구적으로 사용할 수 있습니다.

STEP 1 — VBA 에디터에서 gpt 함수 등록하기

등록 순서

  1. Excel을 열고 Alt + F11을 눌러 VBA 편집기를 연다.
  2. 좌측 프로젝트 창에서 현재 통합 문서를 우클릭 → 삽입 → 모듈을 선택한다.
  3. 새 모듈에 gpt() 함수 코드를 그대로 붙여넣는다.
  4. 코드 상단의 API_KEY 상수를 자신의 OpenAI API 키로 교체한다.
  5. 파일을 ".xlsm" (매크로 사용 통합 문서) 형식으로 저장한다.
  6. 시트로 돌아와 셀에 =gpt("프롬프트", B2)를 입력하면 곧바로 호출이 시작된다.
보안. 최초 실행 시 Excel이 "매크로 사용 허용"을 묻는 보안 경고를 띄우므로 허용을 선택해야 함수가 동작합니다. API 키는 회사 공용 파일에 남기지 않습니다 — 배포 전 키를 제거하거나 별도 시트에서 관리하십시오.

STEP 2 — gpt 함수의 내부 구조 (5단계)

사용자가 셀에 입력한 인자가 어떤 경로로 OpenAI 응답으로 바뀌어 돌아오는지를 보여줍니다.

gpt() UDF — 내부 흐름 요약 (전체 약 200줄)
' 설정값: API_KEY, MODEL_ID("gpt-4.1"), MAX_TOKENS(2000)
Public Function gpt(ByVal prompt As String, Optional ByRef data As Variant) As Variant

' [A] init  : 프롬프트 인자 검증
' [B] range : 셀/범위 인자를 텍스트로 변환 (RangeToText)
' [C] body  : Chat Completions 요청 JSON 구성 (JsonEscape)
' [D] http  : MSXML2.XMLHTTP로 동기 POST 요청
' [E] parse : 응답 JSON에서 "content"만 추출해 셀에 반환 (ExtractContent)

End Function

STEP 3 — 프롬프트 두 종: 분류와 정량화

C열 — 감성 분류 수식
=gpt("이 독서 후기를 읽고, 고객의 감성분석을 하자. 출력 형식은 '긍정'과 '부정' 중 하나의 단어를 출력한다.", B2)
D열 — 1~10점 정량화 프롬프트 (전체)
당신은 도서 후기 감성 분석 및 만족도 정량화 전문가입니다. 각 후기를 독립적으로 분석하여 다음 작업을 수행하세요. # 작업 1. 각 후기를 [긍정] 또는 [부정]으로 분류합니다. 2. 각 후기를 1~10점 척도로 정량화합니다. 3. 점수는 전반적인 만족도, 추천 의사, 학습 효과, 불만 강도를 종합해 판단합니다. # 점수 기준 - 10점: 매우 강한 만족, 강력 추천 / 9점: 매우 만족, 추천 의사 강함 - 8점: 전반적 만족, 장점 분명 / 7점: 대체로 긍정, 일부 제한점 - 6점: 약한 긍정, 기본 용도로 적합 / 5점: 장단점 비슷하나 아쉬움이 큼 - 4점: 부정 평가 뚜렷 / 3점: 실망감 큼 / 2점: 매우 불만족 / 1점: 극단적 불만 # 주의사항 - 장단점 혼재 후기는 최종 만족도와 추천 가능성으로 판단 - "좋지만"·"아쉽다"가 있어도 전체적으로 추천이면 긍정 분류 가능 - "후회"·"비추천"·"환불"·"실망"은 낮은 점수에 강하게 반영 출력은 반드시 점수에 해당하는 숫자만 출력하세요.
한 줄 요약. "Excel 셀 함수 하나로 LLM을 부르는 구조"입니다. 실습 파일 08_커머스_책 후기_샘플.xlsm이 제공되며, 직접 만들어보는 과정은 Ch4(엑셀 VBA 자동화)의 고객후기 정량화 실습에서 학습합니다.