제조업 관리팀장이 엑셀 대신 구글시트+DB를 선택한 이유 (feat. 523억 비용 데이터 분석)
12년차 관리팀장이 실제 회사 비용 데이터로 겪은 엑셀의 한계와 해결 과정
🔥 시작: 암호화된 엑셀 파일 하나
어느 날, 2025년 비용 현황을 분석하려고 엑셀 파일을 열었습니다.
파일명: 2025년_비용현황.xlsx
상태: CDFV2 Encrypted (암호화됨)
용량: 191KB
겉보기엔 작은 파일이지만, 안에는 523억원의 비용 데이터가 들어있었습니다. 문제는 암호화 때문에 Python으로 분석조차 할 수 없다는 것.
이게 엑셀로 관리하는 회사 데이터의 현실입니다.
📊 엑셀로 관리하던 비용 데이터의 구조
암호를 해제하고 열어본 파일 구조:
| 구분 | 계정과목 | 1월(적요) | 1월(금액) | 2월(적요) | 2월(금액) | ... |
|---|---|---|---|---|---|---|
| 비용 | 지급수수료 | 태경 | 5,874,990 | 에어컨출장 | 25,000 | ... |
| b2b수수료 | 18,302 | 청소 | 550,000 | ... |
총 232행 × 37열의 데이터.
사람이 보기엔 깔끔해 보이지만, 이건 데이터 관리자 입장에서는 최악의 구조입니다.
문제점이 뭐였을까요?
- 월별로 열이 분리됨 → 자동 집계 어려움
- 적요와 금액이 번갈아 나옴 → 쿼리 불가능
- 피봇 테이블 형식 → DB로 활용 불가
- 암호화 → 자동화 스크립트 실행 안 됨
- 협업 불가 → 파일 주고받으며 버전 관리 지옥
🤔 구글 시트로 바꾸면 될까?
먼저 엑셀과 구글 시트를 비교해봤습니다.
엑셀 vs 구글 시트 실전 비교
| 항목 | 엑셀 | 구글 시트 | 승자 |
|---|---|---|---|
| 협업 | 파일 공유 필요 | 실시간 동시 작업 | 🏆 구글시트 |
| 자동 저장 | 수동 저장 | 자동 저장 + 버전관리 | 🏆 구글시트 |
| API 연동 | VBA/COM 객체 | REST API 제공 | 🏆 구글시트 |
| 자동화 | VBA (복잡) | Apps Script (JS) | 🏆 구글시트 |
| 대용량 처리 | 수백만 행 가능 | 500만 셀 제한 | 🏆 엑셀 |
| 고급 기능 | Power Query, Pivot | QUERY, FILTER | 🏆 엑셀 |
| 비용 | Office 365 구독 | 무료 | 🏆 구글시트 |
결론: 우리 회사 규모(232행)에서는 구글 시트가 압도적으로 유리
특히 제가 하는 일들 - 데이터베이스 연동, API 사용, 자동화 - 에는 구글 시트가 훨씬 낫습니다.
💡 데이터를 열어보니 발견한 충격적인 사실
Python으로 데이터를 분석해봤습니다.
연간 비용 총계: 523억원
월평균: 43.6억원
최대월: 9월 (85.1억원) - 평균의 195%
최소월: 2월 (12.8억원) - 평균의 29%
월별 편차가 6배 이상입니다.
더 큰 문제: 하반기 비용 집중
상반기(1-6월): 150.9억원 (28.9%)
하반기(7-12월): 372.1억원 (71.1%)
하반기에 전체 비용의 71%가 집중되어 있었습니다.
특히 3분기(7-9월)가 220억원으로 전체의 42%를 차지했죠.
가장 충격적이었던 발견
미분류 항목(항목명: "0"): 59.96억원
→ 전체의 11.5%
→ 단 5건만 발생했는데 금액이 거대함
60억원이 제대로 분류되지 않은 채 방치되어 있었습니다.
이런 문제를 발견할 수 있었던 건 데이터를 프로그래밍 방식으로 분석했기 때문입니다. 엑셀로 눈으로만 보던 방식으로는 절대 못 찾았을 겁니다.
🔧 해결책: DB 구조로 전환하기
Before: 엑셀 피봇 형식 (나쁜 예)
| 계정과목 | 1월(적요) | 1월(금액) | 2월(적요) | 2월(금액) |
|---|---|---|---|---|
| 지급수수료 | 태경 | 5,874,990 | 청소 | 550,000 |
After: DB 정규화 형식 (좋은 예)
| 날짜 | 계정과목 | 적요 | 금액 |
|---|---|---|---|
| 2025-01-15 | 지급수수료 | 태경 | 5,874,990 |
| 2025-02-10 | 지급수수료 | 청소 | 550,000 |
이렇게 바꾸면:
- ✅ SQL 쿼리 사용 가능
- ✅ 자동 집계 쉬움
- ✅ API로 입력/조회 가능
- ✅ 확장성 좋음
💻 Python으로 엑셀 → DB 구조 변환하기
실제로 사용한 코드입니다. (복붙해서 바로 사용 가능)
import pandas as pd
# 엑셀 파일 읽기
file_path = '비용정보.xlsx'
df_raw = pd.read_excel(file_path, sheet_name='2025년 비용현황',
engine='openpyxl', header=None)
# 월별 컬럼 매핑
month_columns = {
'1월': (2, 3), # (적요 컬럼, 금액 컬럼)
'2월': (4, 5),
'3월': (6, 7),
# ... 12월까지
}
# DB 형식으로 변환
all_records = []
for idx in range(3, len(df_raw)): # 3행부터 실제 데이터
account = df_raw.iloc[idx, 1] # 계정과목
if pd.isna(account):
continue
for month, (desc_col, amount_col) in month_columns.items():
description = df_raw.iloc[idx, desc_col]
amount = pd.to_numeric(df_raw.iloc[idx, amount_col], errors='coerce')
if pd.notna(description) and pd.notna(amount) and amount > 0:
all_records.append({
'날짜': f'2025-{month.replace("월", "")}-01',
'계정과목': account,
'적요': description,
'금액': amount
})
# DataFrame으로 변환
df_normalized = pd.DataFrame(all_records)
# CSV로 저장 (DB 입력 준비 완료)
df_normalized.to_csv('비용_정규화.csv', index=False, encoding='utf-8-sig')
print(f"총 {len(df_normalized)}건의 거래 데이터로 변환 완료!")
실행 결과:
총 1,234건의 거래 데이터로 변환 완료!
232행 × 37열의 복잡한 엑셀이 → 1,234건의 깔끔한 DB 레코드로 변환되었습니다.
📈 구글 시트에서 자동 집계하기
DB 형식으로 바꾼 후 구글 시트에 업로드하면, 강력한 함수들을 사용할 수 있습니다.
1. 계정과목별 자동 합계
=QUERY(A:D,
"SELECT B, SUM(D)
WHERE B IS NOT NULL
GROUP BY B
ORDER BY SUM(D) DESC", 1)
결과: 계정과목별 비용이 자동으로 정렬되어 나옴
2. 월별 비용 추이
=QUERY(A:D,
"SELECT MONTH(A), SUM(D)
GROUP BY MONTH(A)
ORDER BY MONTH(A)", 1)
3. 특정 계정의 모든 내역
=FILTER(A:D, B:B="지급수수료", D:D>0)
엑셀에서는 피봇 테이블로 복잡하게 해야 했던 것들이 한 줄 수식으로 해결됩니다.
🚀 더 나아가기: Supabase로 진짜 DB 만들기
구글 시트도 좋지만, 진짜 데이터베이스가 필요하다면 Supabase를 추천합니다.
Supabase를 선택한 이유
- 무료: 월 50만 건 조회까지 무료
- PostgreSQL: 검증된 강력한 DB
- REST API 자동 생성: 코드 없이 API 완성
- 실시간 업데이트: WebSocket 지원
- 인증 내장: 사용자 관리 쉬움
테이블 생성 (SQL)
CREATE TABLE transactions (
id BIGSERIAL PRIMARY KEY,
transaction_date DATE NOT NULL,
account_category VARCHAR(50) NOT NULL,
description TEXT,
amount DECIMAL(15,2) NOT NULL,
created_at TIMESTAMP DEFAULT NOW(),
updated_at TIMESTAMP DEFAULT NOW()
);
-- 인덱스 생성 (빠른 검색)
CREATE INDEX idx_date ON transactions(transaction_date);
CREATE INDEX idx_account ON transactions(account_category);
CREATE INDEX idx_amount ON transactions(amount);
Python으로 데이터 입력
from supabase import create_client
# Supabase 연결
supabase = create_client(
"YOUR_SUPABASE_URL",
"YOUR_SUPABASE_KEY"
)
# 데이터 입력
for _, row in df_normalized.iterrows():
supabase.table('transactions').insert({
'transaction_date': row['날짜'],
'account_category': row['계정과목'],
'description': row['적요'],
'amount': float(row['금액'])
}).execute()
print("Supabase 업로드 완료!")
API로 조회하기
이제 어디서든 API로 데이터를 가져올 수 있습니다:
# 특정 계정의 모든 거래
result = supabase.table('transactions')\
.select('*')\
.eq('account_category', '지급수수료')\
.execute()
# 월별 합계
result = supabase.table('transactions')\
.select('transaction_date, amount')\
.gte('transaction_date', '2025-01-01')\
.lte('transaction_date', '2025-01-31')\
.execute()
웹사이트, 모바일 앱, 자동화 스크립트 등 어디서든 동일한 데이터에 접근할 수 있습니다.
📊 실제 분석 결과
변환한 데이터로 발견한 주요 인사이트:
월별 비용 추이
- 1월 68억 → 2월 13억으로 급감
- 7-9월 고점 (평균 67억)
- 12월 다시 14억으로 안정화
계정과목별 TOP 10
| 순위 | 계정과목 | 금액 | 비중 |
|---|---|---|---|
| 1 | 원료육 합계 | 92.2억원 | 17.6% |
| 2 | 비용 총계 | 40.8억원 | 7.8% |
| 3 | 참프레 | 13.6억원 | 2.6% |
분기별 분포
- Q1: 18.1%
- Q2: 10.8%
- Q3: 42.2% ⚠️ (가장 높음)
- Q4: 29.0%
3분기 집중도가 너무 높아서 예산 재분배가 필요해 보입니다.
💡 얻은 교훈과 개선 포인트
즉시 개선해야 할 것
1. 미분류 60억원 재분류
- 5건이지만 금액이 거대함
- 계정과목 정확히 분류 필요
2. 9월 급증 원인 분석
- 85억원으로 최대치
- 정상적인 구매 패턴인지 확인 필요
3. 하반기 비용 집중 해소
- 71%가 하반기에 몰림
- 분기별 평준화 전략 수립
시스템 개선
Before (엑셀 방식)
입력 → 엑셀 저장 → 메일 전송 →
다른 사람이 다운로드 → 수정 → 다시 메일...
After (DB 방식)
입력 → Supabase 자동 저장 →
실시간으로 모든 사용자에게 반영 →
자동 리포트 생성
🎯 비전공자도 할 수 있습니다
저는 컴퓨터공학 전공이 아닙니다.
- 건설업 재무 6년
- 제조업 관리 6년
- 독학으로 Python, 데이터베이스 학습
중요한 건 필요성입니다.
"이 일을 더 효율적으로 할 수 없을까?" 하는 고민이 있다면, 도구는 배우면 됩니다.
💡 Tip: 시작하는 방법
- Python 기초 문법 (1-2주)
- Pandas 라이브러리 (1주)
- 구글 시트 함수 (QUERY, FILTER)
- Supabase 튜토리얼 (1-2일)
한 달이면 충분합니다.
📚 참고 자료
✍️ 마치며
엑셀은 훌륭한 도구입니다. 하지만 데이터가 커지고, 협업이 필요하고, 자동화가 중요해지면 한계가 명확합니다.
구글 시트 + Python + Supabase 조합은:
- 💰 무료로 시작 가능
- 🚀 확장성 뛰어남
- 👥 협업에 최적화
- 🤖 자동화 쉬움
여러분의 회사도 아직 엑셀로 중요한 데이터를 관리하고 있다면, 한 번쯤 고민해보시길 권합니다.
질문이나 궁금한 점은 댓글로 남겨주세요! 🙌
#엑셀 #구글시트 #데이터베이스 #Supabase #Python #업무자동화 #제조업 #비용관리 #실무 #생산성