엑셀 반복작업 자동화, 매크로·파이썬·AI 비교: 같은 보고서로 실측
사람이 직접 검수한 글 · 검수 검수 방식
매달 같은 엑셀 보고서를 만든다면, AI에게 매번 맡기기보다 코드를 한 번 받아 매크로나 파이썬으로 굳혀 두는 쪽이 훨씬 빨랐습니다. 같은 월별 매출 보고서(3,000행)를 파이썬 스크립트는 0.24~0.28초, 엑셀 매크로는 0.34~0.41초에 만들었고, AI에게 매번 맡기면 57.5~92.6초가 걸렸습니다. 대신 AI가 짜 준 코드는 그대로 믿으면 안 됩니다. AI가 짜 준 매크로는 10월 시트가 추가되자 오류 없이 10월을 뺀 합계를 냈습니다.
직접 해 본 결과
- 파이썬 실행 3,000행 3회. 같은 일을 매크로는 0.34~0.41초
- 0.24~0.28초
- AI에게 맡기기 4회 모두 정답과 일치
- 57.5~92.6초
- AI 코드 재사용 맨 위에 제목 행이 있는 파일에서
- 4개 중 4개 실패
이 글의 파일
상황별 추천 한 줄
- 매달 같은 양식, 회사 PC에 설치 가능 → AI에게 파이썬 코드를 받아 스크립트로 굳히기
- 설치 권한이 없음 → 엑셀 VBA 매크로(이 글의 매크로를 쓰거나, AI에게 받으면 검산 후 사용)
- 한두 번만 할 일, 양식이 매번 다름 → 합성·비식별 데이터로 AI에게 그때그때 맡기기
- 회사 데이터를 외부 AI에 올릴 수 없음 → AI에게는 머리글과 가짜 데이터 몇 줄만 보여 주고 코드만 받기
| 항목 | 매크로(VBA) | 파이썬 스크립트 | AI에게 매번 맡기기 |
|---|---|---|---|
| 설치 | 없음(엑셀만) | Python + openpyxl | AI 도구 계정 |
| AI에게 코드만 받기 | 1회 요청, 67.1초 | 1회 요청, 49.6초 | 필요 없음 |
| 실행 1회(3,000행) | 0.34~0.41초 | 0.24~0.28초 | 57.5~92.6초 |
| 30,000행 | 0.89~0.90초 | 2.11~2.66초 | 측정 안 함 |
| 이 글의 코드, 정답과 일치 | 8가지 입력 모두 | 8가지 입력 모두 | 4회 모두 |
| AI가 짜 준 코드, 정답과 일치 | 7가지 중 5가지 | 8가지 중 7가지 | 해당 없음 |
| 데이터가 나가는 곳 | 내 PC | 내 PC | AI 서비스 |
’AI에게 코드만 받기’는 Claude Code를 명령 창에서 쓰면서 파일 읽기·실행 기능을 모두 끄고, 기본 안내문을 “You are a helpful assistant.” 한 줄로 바꿔 잰 값입니다. 웹의 ChatGPT·Claude 채팅 화면과는 조건이 달라 시간도 다를 수 있습니다. 코드를 받는 데 1분 안팎이 걸린다는 정도로 보세요.
이런 분께 / 준비물
여러 시트나 파일의 표를 매달 같은 모양의 보고서로 정리하고 있다면 이 비교가 맞습니다.
- 예제 파일: sales.xlsx(가상 지점 5곳, 7~9월 시트, 시트마다 1,000행)
- 파이썬 방법: Windows에 Python 설치, 이 글의 make_report.py
- 매크로 방법: Windows용 엑셀(설치 없음), 이 글의 MakeReport.bas
- AI 방법: 파일을 읽고 코드를 실행할 수 있는 AI 도구(이 글은 Claude Code를 썼습니다)
여러 파일을 먼저 한 표로 모아야 한다면 엑셀 여러 파일 합치기를 먼저 보세요.
비교에 쓴 작업
사무직이 흔히 하는 ’월별 시트를 모아 요약 보고서 만들기’를 골랐습니다. 세 방법 모두 결과를 같은 정답과 대조했습니다.
AI에게는 사무직이 쓸 법한 말투로 그대로 요청했습니다. 요청문 앞부분은 이렇습니다.
sales.xlsx 파일에 7월, 8월, 9월 시트가 있습니다. 각 시트 1행에 날짜, 지점,
담당자, 품목, 수량, 단가, 금액 머리글이 있고 ...
'보고서' 시트에 아래 두 표를 만들고 싶어요.
1) 지점별·월별 금액 합계 표 (행: 지점, 열: 7월, 8월, 9월, 합계, 맨 아래에 합계 행)
2) 그 아래 한 줄 띄고 품목별 금액 합계 표 (품목, 금액 두 열, 금액 큰 순서)
1단계 AI에게 매번 맡기기: 정확하지만 한 번에 57.5~92.6초
파일을 주고 “보고서를 만들어 저장해 줘”라고 하면, AI는 4번 모두 정답과 같은 보고서를 만들었습니다. 걸린 시간은 57.5~92.6초였습니다.
- AI는 매번 파일 내용을 먼저 살펴보고, 파이썬 코드를 짜서 돌린 뒤 결과 합계를 원본과 맞춰 봤다고 답했습니다.
- 맨 아래 합계 행이 있는 파일도 알아서 빼고 계산했습니다. 열이 하나 추가된 파일도 맞았습니다.
- 같은 요청이어도 결과 모양은 조금씩 달랐습니다. 한 번은 보고서 시트를 맨 앞에, 다른 한 번은 맨 뒤에 두었습니다.
이 방법은 매번 파일이 AI 서비스로 넘어갑니다. 회사 매출 자료라면 보안 규정부터 확인해야 합니다.
2단계 파이썬: 한 번 굳혀 두면 0.3초
스크립트를 한 번 만들어 두면 다음 달부터는 명령 한 줄로 끝납니다. 이 글의 스크립트는 3,000행을 0.24~0.28초, 30,000행을 2.11~2.66초에 처리했습니다.
- Python을 설치합니다. 공식 문서는 Python install manager를 python.org 또는 Microsoft Store에서 받도록 안내합니다.
- 명령 프롬프트(시작 메뉴에서
cmd검색)를 열고 엑셀 파일을 다루는 부품 openpyxl을 설치합니다.
python -m pip install openpyxl
- make_report.py를 엑셀 파일과 같은 폴더에 두고, 그 폴더로 이동해 실행합니다.
python make_report.py sales.xlsx
같은 폴더에 sales_보고서.xlsx가 생깁니다. 원본 파일은 바꾸지 않습니다. 화면에는 이런 요약이 나옵니다.
시트 3개(7월, 8월, 9월), 집계한 행 3000개, 건너뛴 빈·합계 행 0개, 0.24초 → sales_보고서.xlsx
이 스크립트는 시트 이름과 열 위치에 기대지 않습니다. 머리글을 이름으로 찾고, 빈 행과 합계·소계 행은 건너뜁니다. 금액이 비었거나 숫자가 아닌 행은 빼고 몇 행인지 알려 줍니다.
3단계 매크로: 설치 권한이 없을 때
회사 PC에 파이썬을 설치할 수 없다면 엑셀 안의 VBA 매크로를 씁니다. 이 글의 매크로는 엑셀 2010에서 3,000행을 0.34~0.41초, 30,000행을 0.89~0.90초에 처리했습니다. 30,000행에서는 파이썬보다 빨랐습니다.
- 원본을 복사해 두고 엑셀에서 엽니다.
- Alt+F11로 VBA 편집기를 엽니다.
- 파일 메뉴의 가져오기(Import File, Ctrl+M)로 MakeReport.bas를 고릅니다. AI에게 받은 코드라면 삽입 → 모듈을 누르고 붙여 넣습니다.
- 엑셀로 돌아와 Alt+F8을 누르고 MakeReport를 골라 실행합니다.
- 매크로를 남겨 두려면 ’엑셀 매크로 사용 통합 문서(.xlsm)’로 저장합니다.
실행하면 맨 뒤에 ‘보고서’ 시트가 생기고, 집계한 행 수와 걸린 시간을 알리는 창이 뜹니다. 이미 ‘보고서’ 시트가 있으면 지우고 새로 만듭니다.
AI에게 같은 요청 끝에 “엑셀 2010에서 쓸 VBA 매크로를 짜 주세요”라고 붙이자, 1회 요청에 67.1초 만에 코드와 넣는 법을 받았습니다. 기본 파일에서는 정답이었지만, 아래 결과처럼 다음 달 파일에서는 틀린 경우가 있었습니다.
인터넷이나 메일로 받은 매크로 파일은 Windows용 Office에서 기본으로 막힙니다. 믿을 수 있는 파일만 파일을 마우스 오른쪽 버튼으로 눌러 속성 → 일반 탭의 ’차단 해제’로 풉니다.
직접 해 본 결과: 입력이 바뀌면 깨지는가
다음 달 파일이 이번 달과 똑같다는 보장은 없습니다. 그래서 일부러 8가지로 바꾼 파일을 만들고, 스크립트를 고치지 않은 채 다시 돌렸습니다.
| 입력 상황 | 이 글의 파이썬·매크로 | AI가 짜 준 파이썬 | AI가 짜 준 매크로 | AI가 남긴 스크립트 2개 | AI에게 그때그때 맡기기 |
|---|---|---|---|---|---|
| 기본(3,000행) | 둘 다 정답(각 3회) | 정답(3회) | 정답 | 2개 모두 정답 | 2회 모두 정답 |
| 데이터 10배(30,000행) | 둘 다 정답(각 3회) | 정답 | 실행 안 함 | 1개 실행, 정답 | 측정 안 함 |
| 중간에 열 추가 | 둘 다 정답 | 정답 | 정답 | 2개 모두 정답 | 1회 정답 |
| 빈 행 15개 | 둘 다 정답 | 정답 | 정답 | 2개 모두 정답 | 측정 안 함 |
| 새 달 시트(10월) 추가 | 둘 다 정답(10월 열 생김) | 정답 | 틀림(10월을 뺀 채 보고서 만듦) | 2개 모두 정답 | 측정 안 함 |
| 한 시트만 열 순서 다름 | 둘 다 정답 | 정답 | 정답 | 2개 모두 정답 | 측정 안 함 |
| 맨 아래 합계 행 | 둘 다 정답(합계 행 건너뜀) | 정답 | 정답 | 2개 모두 멈춤(알 수 없는 지점) | 1회 정답 |
| 맨 위 제목 행 | 둘 다 정답 | 멈춤(한글 안내) | 멈춤(한글 안내) | 2개 모두 멈춤(오류) | 측정 안 함 |
- 가장 위험한 경우는 AI가 짜 준 매크로였습니다. 시트 이름을 7·8·9월로 못 박아 두어서, 10월 시트가 생기자 오류 없이 10월을 뺀 보고서를 만들었습니다. 총액이 1,004,519,500으로 정답 1,348,267,000보다 적었습니다.
- AI가 짠 파이썬 코드 3개는 열 추가, 빈 행, 새 시트, 열 순서 변경을 모두 버텼습니다.
- 맨 위에 제목 행이 있으면 AI가 만든 코드 4개 모두 머리글을 찾지 못해 멈췄습니다. 채팅으로 받은 파이썬·매크로는 한글로 이유를 알렸고, 남긴 스크립트 2개는 영어 오류를 냈습니다.
- 맨 아래 ‘합계’ 행은 채팅으로 받은 파이썬·매크로가 건너뛰었습니다. 남긴 스크립트 2개는 ’알 수 없는 지점’이라며 멈췄습니다.
- 멈추면 결과 파일이 생기지 않아 바로 알 수 있습니다. 조용히 틀린 결과는 총액을 원본 합계와 맞춰 봐야 잡힙니다.
- 이 글의 파이썬 스크립트는 따로 만든 13가지 까다로운 입력(병합된 제목 셀, 빈 시트, ‘89,000원’ 같은 글자 금액, 손상 파일, .xls 파일 등)에서도 멈추지 않고 한글로 이유를 알렸습니다.
주의할 점과 한계
- 매크로는 엑셀 2010에서만 실행했습니다. 엑셀 2016 이상이나 Microsoft 365에서는 재 보지 않았습니다.
- AI가 짜 준 매크로는 끝에 완료 창을 띄워, 창을 닫기까지의 시간이 섞여서 처리 시간은 싣지 않았습니다. 30,000행도 실행하지 않았습니다.
- 사람이 직접 코드를 짜는 시간은 재지 않았습니다. 이 글의 ’준비’는 AI에게 코드를 받는 시간입니다.
- 코드만 받는 요청(67.1초, 49.6초)은 첫 표 아래에 적은 조건으로 1회씩 보냈습니다. Claude Code의 기본 설정 그대로 도구만 끄고 보냈을 때는 파이썬 요청이 832~885초 동안 헛돌다 쓸 수 있는 코드 없이 끝나 비교에서 뺐습니다.
- AI는 Claude Code 한 가지만 썼습니다. ChatGPT·엑셀 Copilot 같은 다른 AI 도구는 직접 해 보지 않았습니다.
- AI 결과는 실행할 때마다 달라질 수 있습니다. 같은 조건을 4회만 돌렸습니다.
- 시간은 PC 성능에 따라 다릅니다.
- 회사 자료를 외부 AI에 올리기 전에는 보안 규정을 확인하세요. 이 글은 전부 합성 데이터로 실험했습니다.
자주 묻는 질문
매크로, 파이썬, AI 중 가장 빠른 것은 무엇인가요?
한 번 만들어 둔 매크로나 파이썬 스크립트가 가장 빠릅니다. 3,000행 보고서를 파이썬은 0.24~0.28초, 엑셀 2010 매크로는 0.34~0.41초에 만들었습니다. 30,000행에서는 매크로가 0.89~0.90초로 파이썬(2.11~2.66초)보다 빨랐습니다. 같은 일을 AI에게 매번 맡기면 57.5~92.6초가 걸렸습니다.
AI가 짜 준 코드를 다음 달에도 그대로 써도 되나요?
그대로 쓰기 전에 검산이 필요합니다. AI가 만든 코드 4개는 맨 위에 제목 행이 생기자 모두 보고서를 만들지 못했습니다. AI가 짜 준 매크로는 10월 시트가 추가된 파일에서 오류 없이 10월을 뺀 보고서를 만들었습니다. 다음 달 파일로 한 번 돌려 보고 결과 합계를 원본과 맞춰 보세요.
회사 PC에 파이썬을 설치할 수 없으면 어떻게 하나요?
엑셀에 들어 있는 VBA 매크로를 씁니다. 설치가 필요 없고, 이 글의 매크로는 엑셀 2010에서 3,000행을 0.34~0.41초에 처리했습니다. 다만 인터넷에서 받은 매크로 파일은 Windows용 Office에서 기본으로 막히므로, 믿을 수 있는 파일만 파일 속성의 '차단 해제'로 풉니다.
근거와 출처
직접 해 본 근거
- 직접 측정 2026년 10월 29일, 합성 매출 파일(시트 3개 × 1,000행)로 '지점별·월별 합계와 품목별 합계 보고서'를 만들었습니다. 파이썬은 3,000행과 30,000행에서 각 3회, 엑셀 2010 매크로는 3,000행·30,000행 각 3회, AI(Claude Code)는 파일을 주고 맡기는 방식으로 4회, 코드만 받는 방식으로 매크로·파이썬 각 1회 실행해 시간을 쟀습니다. 모든 결과는 미리 계산해 둔 정답과 검산 스크립트로 대조했습니다.
- 직접 측정 입력이 바뀌는 경우 8가지(중간에 열 추가, 빈 행, 새 달 시트, 열 순서 변경, 합계 행, 제목 행, 데이터 10배 등)를 만들어, 이 글의 파이썬·매크로와 AI가 만든 코드 4개(파이썬 3개, 매크로 1개)를 고치지 않고 다시 돌렸습니다.
- 직접 캡처 이 글의 매크로를 엑셀 2010에서 실행해 만든 보고서 시트를 직접 캡처했습니다.
- 결과 파일 비교에 쓴 합성 예제 파일(sales.xlsx), 보고서 스크립트(make_report.py), 매크로(MakeReport.bas)를 내려받을 수 있습니다.
- 실행 코드 AI에게 보낸 요청문, AI의 답과 AI가 만든 스크립트, 실행 기록을 원문 그대로 보관했습니다.
참고한 출처
- Microsoft Learn — Macros from the internet are blocked by default in Office
- Microsoft 지원 — Keyboard shortcuts in Excel
- Claude Code 문서 — Run Claude Code programmatically
- openpyxl 공식 문서
- PyPI — openpyxl
- Python 공식 문서 — Using Python on Windows
- Microsoft Learn — File menu (VBA 편집기 Import File)
- Microsoft 지원 — Save a macro