기업 실적 데이터로
이상징후와 변화 포인트 찾기
월별 예산·실적 데이터를 세로형 표 하나로 바꾸고, 데이터 오류를 먼저 걸러낸 뒤, 같은 규칙을 매달 반복 적용해 이상 항목을 찾고 그 성격(구조적·일시적·계절성·예산 문제)을 판별합니다. 마지막으로 원인 목록과 보고 문장까지 만듭니다.
0실습 파일과 모듈의 흐름
| 시트 | 내용 |
|---|---|
README | 회사·기간·단위·작업 순서 |
계정마스터 | 계정코드·계정명·계정유형·담당부서 (20행) |
예산_원본 | 가로형 20계정 × 21개월 |
실적_원본 | 가로형 20계정 × 21개월 (+ 행 1개 추가) |
Settings(기준값) 시트와 보정 시트는 2장에서 추가합니다.
| 파일 | 교안 | 파일에서 하는 일 |
|---|---|---|
| 0.원본 | 0 | 시작 파일 |
| 1.현재표 자체에서 이상치 검토 | 1-1 | 실적_원본 옆에 전월 대비 차이·비율 계산 |
| 2-1.세로형 데이터 설정 | 1-5, 2-1 | 열 피벗 해제, 예산·실적·계정마스터 병합 → 예실 421행 |
| 2-2.세로형 데이터 설정_소모품비_그룹화 | 2-2 | 실적세로 그룹화 → 예실 420행 |
| 2-3.세로형 데이터 설정_오류보정 | 2-3, 2-4 | Settings·보정 시트 추가, 점검 열·분석실적 열 추가 |
| 3-1.데이터 상태와 불리금액 계산 | 3장 | 데이터상태·불리금액·차이율·플래그 열, 피벗·슬라이서 |
| 4-1.비교축 확장으로 구조적, 일시적 판별 | 4-1 ~ 4-6 | 비교 축 열과 판별표 열 |
| 4-2.피벗만들기 | 4-7 | 스파크라인 피벗, 히트맵 피벗 |
- 각 파일은 앞 단계까지 완성된 상태. 중간에 따라오지 못하면 해당 단계 파일을 열고 이어서 진행.
- 5~6장은 4-2 파일에 시트를 추가해서 진행.
실습의 시작점
- 전월 대비 9월의 영업이익 수치가 차이가 큼
- 수집된 데이터에 잘못된 사항이 있는지 확인 필요
실습 내용
월별 예실 데이터를 올리면 이상 항목을 자동으로 탐지하고 원인 분석까지 이어지는 툴을 엑셀로 만듭니다.이 모듈의 흐름
매달 같은 계산을 반복할 수 있는 표인가
→
예산세로, 실적세로 쿼리이 숫자를 믿어도 되는가
→
예실 표 + 보정 시트 + 분석실적 열이번 달 어디가 이상한가
→ 플래그 열 (
확인 7건)한 번인가, 계속인가, 매년인가
→
판별표 열왜 그런가, 누구에게 물어볼까
→
원인목록 시트어떻게 전달할까
→
보고문 시트- 2장은 데이터 오류(데이터가 틀린 것)를 찾음. 고쳐야 할 대상.
- 3~4장은 이상징후(데이터는 맞는데 사업에서 이상한 일이 일어난 것)를 찾음. 원인을 물어볼 대상.
- 오류를 먼저 걸러내지 않으면, 3장에서 엉뚱한 곳에 깃발이 꽂힘.
- 1장에서 만든 세로형 표 하나로 2~6장을 모두 진행함. 원본 가로형 시트는 분석에 다시 쓰지 않음. (원천 값을 확인할 때만 봄)
1예실 데이터 표를 분석 가능한 형태로 변경
1-1현재 표 자체에서 이상치 검토
전월 데이터와 차이, 비율을 계산해 봅니다.
실습 파일 1.현재표 자체에서 이상치 검토 : 실적_원본 시트 X열(차이) =W2-V2, Y열(비율) =W2/V2-1
| 계정코드 | 계정명 | 2026-08 | 2026-09 | 차이 | 비율 |
|---|---|---|---|---|---|
| 4110 | 제품매출 | 3,127,302,000 | 3,061,552,000 | −65,750,000 | −2.1% |
| 4120 | 상품매출 | 836,791,000 | 832,590,000 | −4,201,000 | −0.5% |
| 5110 | 원재료비 | 1,671,879,000 | 1,654,092,000 | −17,787,000 | −1.1% |
| 5120 | 외주가공비 | 442,379,000 | 437,489,000 | −4,890,000 | −1.1% |
| 5130 | 노무비 | 515,757,000 | 513,283,000 | −2,474,000 | −0.5% |
| 5140 | 제조경비 | 308,885,000 | 308,703,000 | −182,000 | −0.1% |
| 6110 | 급여 | 369,255,000 | 370,810,000 | 1,555,000 | 0.4% |
| 6120 | 복리후생비 | 49,777,000 | 105,567,000 | 55,790,000 | 112.1% |
| 6130 | 출장비 | 13,672,000 | 18,900,000 | 5,228,000 | 38.2% |
| 6140 | 교육훈련비 | 1,933,000 | 2,278,000 | 345,000 | 17.8% |
| 6150 | 접대비 | 11,810,000 | 11,078,000 | −732,000 | −6.2% |
| 6160 | 광고선전비 | 120,215,000 | 117,859,000 | −2,356,000 | −2.0% |
| 6170 | 지급수수료 | 143,075,000 | 149,802,000 | 6,727,000 | 4.7% |
| 6180 | 운반비 | 98,875,000 | 101,587,000 | 2,712,000 | 2.7% |
| 6190 | 소모품비 | 25,738,000 | 25,969,000 | 231,000 | 0.9% |
| 6200 | 수선비 | 25,992,000 | 124,000,000 | 98,008,000 | 377.1% |
| 6210 | 임차료 | 60,000,000 | 60,000,000 | 0 | 0.0% |
| 6220 | 수도광열비 | 45,584,000 | 25,140,000 | −20,444,000 | −44.8% |
| 6230 | 통신비 | 6,009,000 | −6,009,000 | −100.0% | |
| 6240 | 도서인쇄비 | 2,978,000 | 6,600,000 | 3,622,000 | 121.6% |
| 6190 | 소모품비 | 0 | #DIV/0! |
이 표에서 보이는 것
- 수선비 +377%, 복리후생비 +112%, 도서인쇄비 +122% : 크게 튄 계정이 몇 개 눈에 띔.
이 표로는 판단하기 어려운 것
- 통신비 −100% : 돈을 안 쓴 것인지, 데이터가 빠진 것인지 알 수 없음. 비용이 줄었으니 오히려 좋은 뉴스처럼 보임.
- 맨 아래 소모품비 행 : 같은 계정이 두 번 나옴. 어느 쪽이 맞는지, 더해야 하는지 알 수 없음.
- 도서인쇄비 +122% : 비율은 크지만 금액은 362만 원. 이걸 먼저 봐야 하는지 판단 기준이 없음.
- 전월 대비만 봄 : 작년 같은 달보다 나빠진 건지, 매년 9월이면 원래 이런 건지 모름.
- 이번 달만 봄 : 몇 달째 계속되는 문제인지, 이번 한 번인지 모름.
- 예산과 비교하지 않음 : 계획 대비 얼마나 벗어났는지 모름.
- 수익과 비용이 섞여 있음 : 제품매출 −2.1%는 나쁜 것이고, 수도광열비 −44.8%는 좋은 것. 같은 마이너스인데 의미가 반대.
- 눈으로 확인하는 이상치 점검에서 벗어나, 같은 규칙을 매달 반복 적용해서 구조적 판별까지 가능한 분석 툴을 만드는 것이 이 모듈의 목표.
- 위의 “판단하기 어려운 것”이 2~4장에서 하나씩 해결됨. (7장에서 다시 확인)
1-2가로형 데이터 형식
가로형은 반복되는 비교 항목을 여러 열로 펼쳐 놓은 구조. 실습 파일의 예산_원본, 실적_원본 시트가 가로형 구조입니다.
| 계정코드 | 계정명 | 2026-07 | 2026-08 | 2026-09 |
|---|---|---|---|---|
| A100 | 제품매출 | 100 | 110 | 120 |
| A200 | 원재료비 | 70 | 78 | 85 |
- 한 행에 한 계정의 여러 달 실적이 포함
- 월 정보는 셀의 값이 아니라
2026-07,2026-08같은 열 이름에 들어 있음 - 다음 달이 추가되면 보통 오른쪽에 열을 하나 더 만듦
장점
- 한 계정의 월별 증감을 좌우로 비교하기 쉬움
- 보고자료, 인쇄물, 검토용 화면에 적합
- 월별 값을 직접 입력하거나 특정 월을 확인하기에 편함
- 스파크라인처럼 한 행의 추이를 보여주는 표현에 잘 맞음
단점
- 월이 늘어날 때 참조 범위, 수식, 차트, 집계 설정을 점검해야 함
- 월을 공통 필드로 사용하기 어려워 기간 필터나 분기 집계가 번거로움
- 예산표와 실적표의 열 순서가 다르면 위치에 의존한 비교에서 실수가 생길 수 있음
- 부서, 사업장, 시나리오 등 변수가 추가되면 시트나 열 묶음이 반복되기 쉬움
1-3세로형 데이터 형식 소개
세로형은 반복되는 항목을 하나의 열에 값으로 넣고, 관측값을 행으로 쌓는 구조. 위 표를 변환하면 아래와 같습니다.
가로형 — 월이 열 이름
| 계정명 | 07 | 08 | 09 |
|---|---|---|---|
| 제품매출 | 100 | 110 | 120 |
| 원재료비 | 70 | 78 | 85 |
세로형 — 월이 데이터 값
| 계정코드 | 계정명 | 월 | 실적 |
|---|---|---|---|
| A100 | 제품매출 | 2026-07-01 | 100 |
| A100 | 제품매출 | 2026-08-01 | 110 |
| A100 | 제품매출 | 2026-09-01 | 120 |
| A200 | 원재료비 | 2026-07-01 | 70 |
| A200 | 원재료비 | 2026-08-01 | 78 |
| A200 | 원재료비 | 2026-09-01 | 85 |
- 한 행은 한 계정의 한 달 실적을 의미
월은 공통 열이 되고, 각 월은 그 열의 값이 됨- 다음 달이 추가되어도 열 구조는 같고 행만 늘어남
- 하나의 숫자만 한 행에 들어가고, 나머지 열은 해당 숫자의 의미를 명시하는 구조
장점
- 월, 계정, 부서를 조건으로 필터링하고 집계하기 쉬움
- 월별로 같은 계산 규칙을 적용하기 쉬움
- 여러 기간의 데이터를 같은 구조로 누적할 수 있음
- 키를 사용해 예산, 실적, 마스터를 결합하기 쉬움
- 중복 키, 누락 월, 미등록 계정처럼 일정한 규칙으로 확인할 오류가 명확해짐
단점
- 행 수가 늘고 계정명 같은 값이 반복됨
- 여러 달을 한눈에 읽으려면 피벗테이블 등으로 변환이 필요
- 데이터를 중복 기입하는 경우 중복 집계가 발생할 가능성
| 비교 기준 | 월이 열인 가로형 | 월이 행으로 쌓이는 세로형 |
|---|---|---|
| 한 행의 의미 | 한 계정의 여러 달 값 | 한 계정·한 달의 값 |
| 월의 위치 | 열 이름 | 월 열의 데이터 값 |
| 월 추가 | 열 추가, 참조 범위 점검 | 행 추가, 기존 열 구조 유지 |
| 월별 추이 육안 확인 | 편리 | 피벗·차트로 재배치하면 편리 |
| 반복 계산 | 열마다 참조가 달라질 수 있음 | 같은 열을 대상으로 규칙 재사용 |
| 기간별 필터·집계 | 별도 범위 지정이나 변환이 필요할 수 있음 | 월 필드로 일관되게 처리 |
| 예산·실적 결합 | 계정과 월별 열을 함께 맞춰야 함 | 계정·월 키로 대응 |
| 피벗테이블 | 만들 수 있으나 월을 하나의 필드로 다루기 불편 | 월을 행·열·필터에 자유롭게 배치 |
| 보고·인쇄 | 적합 | 보고용 재구성이 필요한 경우가 많음 |
| 주요 관리 부담 | 늘어나는 열과 반복 수식 | 늘어나는 행과 키의 정확성 |
오해하지 말아야 할 점
- 가로형에서도 계산과 피벗테이블 생성은 가능. 세로형의 장점은 반복 분석을 일관되게 수행하기 쉽다는 것.
- 모든 분석이 세로형 데이터만 요구하는 것은 아님. 여러 변수를 열로 둔 통계, 모델 입력처럼 가로 형태가 적합한 경우도 있음.
1-4예실 분석에서 Raw data를 세로형으로 변환하는 이유
- 모든 월에 같은 계산 규칙을 적용하기 위함 가로형 데이터는 7월 차이, 8월 차이, 9월 차이를 각각의 열 위치 참조로 계산. 중간에 다른 데이터가 끼어드는 등 표 구조가 바뀌면 참조가 맞는지 관리해야 함. 세로형 데이터는 월 데이터 기준으로 같은 수식을 사용.
- 분석 질문이 바뀌어도 같은 표를 사용하기 위함
월을 날짜 값으로 두면 기간 계산의 기준이 명확해짐.
분석 질문 필요한 열과 조건 9월 비용 합계는? 월 = 9월, 계정유형 = 비용 계열 3분기 예산 대비 실적은? 월 = 7~9월, 예산·실적 집계 부서별 초과 집행 규모는? 담당부서별 불리금액 집계 전년 동월보다 증가했는가? 같은 계정, 12개월 전 월과 대응 실적이 빠진 계정은? 기대 계정·월 목록과 실적 비교 - 자료를 위치가 아닌 의미로 연결하기 위함
예산표의 10번째 행과 실적표의 10번째 행이 같은 계정이라고 보장할 수 없다. 열 순서도 다를 수 있다.
✕ 잘못된 가정
같은 위치에 있으니 같은 값이다.
✓ 연결 기준계정코드와 월이 같으니 비교할 값이다.
- 검증 규칙을 표 전체에 적용하기 위함 “계정·월 조합은 한 번만 등장해야 한다”, “실적은 숫자여야 한다”, “모든 계정이 마스터에 있어야 한다” 같은 조건을 일괄 검사할 수 있음.
1-5열 피벗 해제
예산_원본시트 → 표 안에 커서를 둔다.- [데이터] → [데이터 가져오기] → [기타 원본에서] → [테이블/범위에서]
- Power Query 편집기가 열린다.
- 계정코드, 계정명 두 열을 Ctrl로 선택
- 선택한 열 머리글에서 마우스 우클릭 → [다른 열 피벗 해제]← 여기서 21개 월 열이 2개 열(특성/값)로 접힌다
- 특성 → “월”, 값 → “예산”으로 열 이름 변경 (머리글 더블클릭)
- 계정코드 열 형식을 텍스트로: 머리글 왼쪽 아이콘 → [텍스트]
- 월 열 형식을 날짜로: 머리글 왼쪽 아이콘 → [날짜]
- 쿼리 이름을 “예산세로”로 변경 (우측 속성 창)
- [홈] → [닫기 및 로드] → [닫기 및 다음으로 로드] → 연결만 만들기
5번 — 다른 열 피벗 해제를 선택하는 것이 중요
열 피벗 해제가 아니라다른 열 피벗 해제를 선택열 피벗 해제는 내가 고른 열을 눕힘. 21개 월 열을 하나하나 골라야 함.다른 열 피벗 해제는 내가 고르지 않은 나머지를 눕힘. 계정코드, 계정명만 고르고 나머지를 맡김.
열 피벗 해제를 사용하면 매달 쿼리를 수정해야 함.실적 시트도 동일하게 진행
2예산과 실적 병합 및 데이터 오류 확인
2-1예산과 실적 병합
예산과 실적을 하나의 데이터로 합칩니다. 예산 데이터가 기준이 되므로 예산 데이터를 기준으로 병합합니다.
계정마스터시트 → 표 안에 커서를 둔다.- [데이터] → [데이터 가져오기] → [기타 원본에서] → [테이블/범위에서]
- Power Query 편집기가 열린다.
- 계정코드 열 형식을 텍스트로: 머리글 왼쪽 아이콘 → [텍스트]
- 쿼리 이름을 “계정마스터”로 변경 (우측 속성 창)
- [데이터] → [데이터 가져오기] → [쿼리 결합] → [병합](또는 Power Query 편집기에서 예산세로 선택 후 [홈] → [쿼리 병합])
- 첫 번째 = 예산세로, 두 번째 = 실적세로
- 조인 키: 계정코드와 월 두 열을 각각 Ctrl로 선택 (순서가 같아야 한다)
- 조인 종류: [왼쪽 외부(첫 번째의 모두, 두 번째의 일치하는 행)]
- [확인] → 새로 생긴 열의 확장 아이콘 → “실적”만 체크 → “원래 열 이름을 접두사로 사용” 체크 해제 → [확인]
- [쿼리 병합]
- 두 번째 테이블로 계정마스터 선택
- 조인 키: 계정코드 선택
- 조인 종류: [왼쪽 외부(첫 번째의 모두, 두 번째의 일치하는 행)]
- [확인] → 새로 생긴 열의 확장 아이콘 → “계정유형”과 “담당부서” 체크 → 기본 열 이름 접두사 삭제 → [확인]
- “월” 열을 클릭해서 선택
- 상단의 [열 추가] 탭 클릭
- 리본에서 [날짜] → [년] → [년]을 선택해 연도 열을 추가
- 다시 원래 “월” 열을 선택한 뒤 [열 추가] → [날짜] → [월] → [월] 선택
- 다시 원래 “월” 열을 선택한 뒤 [열 추가] → [날짜] → [분기] → [연간 사분기] 선택
- 새로 생긴 열 이름 변경: “년” → “연도”, “월.1” → “월번호”
- 쿼리 이름을 “예실”로 변경 (우측 속성 창)
- [닫기 및 로드] → 새 시트 (표 이름: 예실)
예실 표가 이후 모든 작업의 기준 표. 원본 가로형 시트는 분석에 다시 쓰지 않음.2-2행 수 확인 — 중복
병합이 끝나면 가장 먼저 행 수를 확인합니다. (상태 표시줄 또는 Ctrl+End)
- 예산세로의 행 수는 420행 (20계정 × 21개월)
- 그런데 병합 결과는 421행으로 한 행이 늘었음
예실 표에 열을 하나 추가해서 찾아봅니다.
=COUNTIFS([계정코드], [@계정코드], [월], [@월])
- 1보다 큰 행이 중복.
- 소모품비 2026년 7월 데이터에 중복 존재.
- 원천을 확인해 보면, 실적_원본 시트 맨 아래에 소모품비 행이 하나 더 있음. 7월 칸에만 값(8,400,000원)이 있고 나머지는 비어 있음.
지워야 하나, 더해야 하나?
- 이중 계상이면 지워야 하고, 추가 계상이면 더해야 함. 금액이 완전히 달라짐.
- 이건 엑셀이 답을 줄 수 없음. 관련 담당자에게 확인해야 함.
- 이번 데이터는 “7월 추가 계상분”으로 확인되었다고 보고 합하기로 함.
반영 방법 — 원본 시트는 고치지 않음
Power Query의 실적세로에 그룹화 단계를 추가합니다.
- 기본/고급
- 고급 선택
- 그룹 기준
- 계정코드, 계정명, 월 ← [그룹화 추가] 버튼 클릭하여 그룹 기준 추가
- 새 열 이름
- 실적
- 연산
- 합계
- 열
- 실적
- [모두 새로 고침] →
예실표가 420행으로 돌아오는지 확인. - 중복을 지우는(행 제거) 방식은 금액을 잃음. 그룹화 합산이 기본이고, 이중 계상으로 확인된 경우에만 제거.
2-3빈칸 확인 — 결측
예실 표의 실적 열에서 필터 → (비어 있음)을 선택하면 한 행이 나옵니다.
- 통신비 2026년 9월 실적이 비어 있음.
왜 예산을 기준으로 병합했나?
- 예산은 20계정 × 21개월이 빠짐없이 다 있음. 실적은 아직 안 들어온 값이나 누락된 값이 있을 수 있음.
- 완전한 쪽을 왼쪽에 두고 붙여야, 빠진 것이 빈칸으로 남아서 보임.
- 실적을 기준으로 병합했다면 통신비 9월 행은 아예 없었음.
다른 열 피벗 해제는 빈 값을 조용히 버리기 때문.
행 수의 함정
- 행 수가 같다고 데이터가 같은 게 아님. 방향이 반대인 두 오류는 서로를 숨겨 줌. “합계가 맞으니 됐다”는 검산이 아님.
- 그래서 행 수뿐 아니라 계정별 월 수를 셈. (통신비 20개월, 소모품비 22개월 → 둘 다 21이 아님)
빈칸을 평균으로 채우면 안 되나?
- 통신비 지난 20개월 평균은 약 588만 원. 채우면 합계가 그럴듯하게 나옴.
- 하지만 추정치이므로 판정에 쓰지 않음. 채우는 순간 “확인이 필요하다”는 신호가 사라짐.
- 빈칸은 빈칸으로 두고, 3장에서
DATA_CHECK로 표시해서 계산에서 제외함.
2-4값은 있는데 틀린 값 — 튀는 값 점검
세 번째 오류는 행 수로도, 빈칸으로도 안 잡힙니다. 값은 있고, 숫자이고, 자리도 맞는데 틀린 경우.
세로형 표에서는 같은 규칙을 모든 행에 한 번에 걸 수 있습니다. “이 계정의 평소 금액보다 몇 배인가”를 열로 만들어 봅니다.
=AVERAGEIFS([실적], [계정코드], [@계정코드])
=IF(ISNUMBER([@실적]), [@실적]/[@계정평균], "")
=IF([@평균대비배수]="", "", IF([@평균대비배수]>=튀는값배수기준, "원천확인", ""))
Settings시트를 추가하고 기준값을 정리.튀는값배수기준(값: 3)을 이름으로 정의해서 사용. 기준값을 수식 안에 직접 쓰지 않음. (이름 정의 방법은 3-5)AVERAGEIFS는 빈칸을 건너뛰므로 통신비 결측이 평균을 망가뜨리지 않음.
필터에서 튀는값 = 원천확인을 고르면 두 행이 나옵니다.
| 계정 | 월 | 실적 | 계정평균 | 배수 |
|---|---|---|---|---|
| 접대비 | 2026-06 | 72,586,000 | 14,885,857 | 4.9배 |
| 수선비 | 2026-09 | 124,000,000 | 33,766,619 | 3.7배 |
| 1월 | 2월 | 3월 | 4월 | 5월 | 6월 | 7월 | 8월 | 9월 |
|---|---|---|---|---|---|---|---|---|
| 11,447,000 | 12,571,000 | 12,057,000 | 12,036,000 | 12,050,000 | 72,586,000 | 12,265,000 | 11,810,000 | 11,078,000 |
6월에 접대를 여섯 배 했을까?
- 1월부터 5월까지 합계는 60,161,000원. 72,586,000원과의 차이는 12,425,000원. 다른 달과 비슷한 금액.
- 즉 6월 칸에 당월 값이 아니라 1~6월 누계 값이 들어간 것. ERP에서 당월과 누계 시트를 잘못 가져오면 생기는 일.
- 원천 담당자 확인 결과 6월 당월 실적은 12,425,000원으로 회신받았다고 가정.
데이터 오류
수선비 9월도 같은 오류인가?
- 원천 담당자 확인 결과, 9월 설비 고장으로 실제 수리비가 발생한 것.
- 데이터는 맞음. 이건 오류가 아니라 이상징후. 고치지 않고 3장 이후에서 다룸.
이상징후
원천확인은 “틀렸다”가 아니라 “원천을 확인해 봐야 한다”는 표시. 확인해 보니 하나는 오류, 하나는 실제 사건.- 오류인지 사건인지는 수식이 아니라 원천 확인이 결정함.
접대비 반영 방법 — 보정 시트
원본 시트와 쿼리는 고치지 않습니다. 보정 내용을 표로 정리하고, 예실 표에서 그 값을 찾아 쓰는 방식.
- 새 시트 추가 → 시트 이름 “보정”
- 머리글 입력: 계정코드 | 월 | 원래 값 | 보정 값 | 근거 | 확인자 | 일자 | 키
- 접대비 보정 내용 한 줄 입력
- 표 안에 커서 → [Ctrl+T] → [테이블 디자인] → 표 이름 “보정”
| 계정코드 | 월 | 원래 값 | 보정 값 | 근거 | 확인자 | 일자 | 키 |
|---|---|---|---|---|---|---|---|
| 6150 | 2026-06-01 | 72,586,000 | 12,425,000 | 1~6월 누계 혼입, 원데이터 확인 | 경영지원 | 2026-10-05 | (수식) |
=[@계정코드]&"|"&TEXT([@월],"yyyy-mm")
=[@계정코드]&"|"&TEXT([@월],"yyyy-mm")
=IFERROR(INDEX(보정[보정 값], MATCH([@키], 보정[키], 0)), "")
=IF([@보정값]<>"", [@보정값], IF([@실적]="", "", [@실적]))
| 열 | 역할 |
|---|---|
키 | 계정코드와 연월을 붙인 문자열. 보정 시트와 예실 표를 연결하는 기준. 4장에서 “작년 같은 달”을 찾을 때도 사용. |
보정값 | 보정 시트에 같은 키가 있으면 보정 값을 가져옴. 없으면 빈칸. |
분석실적 | 보정값이 있으면 보정값, 없으면 원래 실적. 3장부터 모든 계산은 분석실적을 사용. |
IF([@실적]="", "", …) | 실적이 비어 있으면 빈칸을 유지. =[@실적]만 쓰면 빈칸이 0으로 바뀌어 통신비가 “0원 사용”으로 보임. |
| 계정 | 월 | 실적 | 보정값 | 분석실적 |
|---|---|---|---|---|
| 접대비 | 2026-06 | 72,586,000 | 12,425,000 | 12,425,000 |
| 통신비 | 2026-09 | (빈칸) | (빈칸) | (빈칸) |
실적열은 원천 그대로 남아 있음. 보정 전후를 언제든 비교 가능.튀는값은 원천실적기준이라 접대비 6월에 계속원천확인이 표시됨. 같은 행에보정값이 있으면 “확인 후 보정 완료”라는 뜻.- 다음 달에 보정할 것이 생기면 보정 시트에 한 줄 추가. 원천에서 수정된 파일을 받으면 그 줄을 삭제.
원본 시트를 직접 고치면 더 쉽지 않나?
- 다음 달 새 원본으로 바꾸면 보정이 사라지고, 고쳤다는 사실도 남지 않음.
- 보정 시트는 그 자체가 보정 기록. 원래 값·보정 값·근거·확인자가 한 줄에 남음.
통신비는 채우지 않았는데 접대비는 왜 고쳤나?
- 접대비는 원천 담당자가 확인해 준 값이 있음. 근거가 있는 보정.
- 통신비는 아직 회신이 없음. 근거 없이 채우면 추정.
2-5데이터 점검 정리
세 오류는 서로 성격이 다릅니다.
| 오류 | 찾은 방법 | 처리 | 고치지 않았다면 |
|---|---|---|---|
| 소모품비 중복 | 병합 후 행 수 증가, 키중복 | 그룹화 합산 | 7월 차이율 +28.4%, 누계 +2.3%. 기준 미달이라 결론은 안 바뀜 |
| 통신비 결측 | 빈칸 필터, 계정별 월 수 | 비워 두고 DATA_CHECK | 0원으로 계산되어 “돈을 안 썼다”는 틀린 좋은 뉴스 |
| 접대비 누계 혼입 | 평균대비배수 → 원천확인 | 보정 시트에 기록 → 분석실적 반영 | 누계 차이율 +55.5%로 있지도 않은 문제가 최우선 확인 대상이 됨 (4장에서 확인) |
- 결론이 안 바뀌는 오류도 반드시 고침소모품비처럼 고쳐도 결론이 안 바뀌는 오류도 고침. 안 고치면 다음 달에 금액이 커질 때 그대로 틀림.
- 틀린 좋은 뉴스가 틀린 나쁜 뉴스보다 위험나쁜 뉴스는 누군가 확인하지만, 좋은 뉴스는 아무도 확인하지 않음.
2-6실습 — 세로형 통합표 만들고 오류 세 개 찾기
| 확인 항목 | 기대 값 | ○/× |
|---|---|---|
예산세로 행 수 | 420 | |
실적세로 행 수 (그룹화 전) | 420 | |
병합 직후 예실 행 수 | 421 | |
그룹화 추가 후 새로 고침한 예실 행 수 | 420 | |
| 실적이 빈 행 | 통신비 2026-09 | |
튀는값 = 원천확인 행 | 접대비 2026-06, 수선비 2026-09 | |
Settings, 보정 시트가 있는가 | ○ | |
접대비 2026-06 분석실적 | 12,425,000 | |
통신비 2026-09 분석실적 | 빈칸 (0이 아님) | |
월 열이 날짜 형식인가 (오른쪽 정렬) | ○ |
정리 질문
- 예산세로 420행, 실적세로 420행이었음. 행 수가 같으니 데이터도 같은가?
- 수선비 9월은 왜 고치지 않았나?
- 통신비 9월 빈칸을 평균으로 채우면 어떤 일이 생기나?
3차이 계산과 이상 항목 플래깅
- 2장까지는 “데이터가 틀린 곳”을 찾았음. 3장부터는 데이터가 맞다는 전제에서 “사업에서 이상한 일이 일어난 곳”을 찾음.
- 비율만 보면 작은 계정이 목록을 점령하고, 금액만 보면 큰 계정만 보임.
- 두 기준을 AND로 묶고, 아주 큰 금액에는 OR로 예외를 두는 것이 핵심.
실습 파일 : 3-1.데이터 상태와 불리금액 계산
3-1유리·불리는 계정유형이 결정
실적 − 예산을 그대로 차이로 쓰면
- 비용 계정은 양수면 나쁨. (더 썼음)
- 수익 계정은 양수면 좋음. (더 벌었음)
| 계정 | 유형 | 예산 | 실적 | 실적−예산 | 불리금액 | 읽는 법 |
|---|---|---|---|---|---|---|
| 제품매출 | 수익 | 3,400,000,000 | 3,061,552,000 | −338,448,000 | +338,448,000 | 3.4억 덜 벌었다 → 불리 |
| 상품매출 | 수익 | 800,000,000 | 832,590,000 | +32,590,000 | −32,590,000 | 3천만 더 벌었다 → 유리 |
| 지급수수료 | 판관비 | 120,000,000 | 149,802,000 | +29,802,000 | +29,802,000 | 3천만 더 썼다 → 불리 |
| 교육훈련비 | 판관비 | 8,000,000 | 2,278,000 | −5,722,000 | −5,722,000 | 570만 덜 썼다 → 유리 |
- 계정유형은 2-1에서 병합한
계정마스터에서 옴. 그래서 계정마스터를 붙인 것. - 절댓값(
ABS)으로 판정하지 않음. 절댓값을 쓰면 예산을 크게 절감한 계정이 빨간 경보로 올라옴. 경보 목록에 좋은 뉴스가 섞이면 그 목록은 곧 무시됨.
교육훈련비는 570만 원 덜 썼으니 좋은 소식인가?
- 예산 미집행일 수도 있음. 하반기에 몰아서 집행할 예정인지 확인 필요.
- 그래서 “유리”는 경보하지 않지만 표시는 남겨 둠.
3-2데이터 상태와 계산 열
계산 전에 문지기를 하나 세웁니다. 데이터 상태가 OK가 아니면 계산하지 않습니다.
=IF([@분석실적]="","MISSING", IF(NOT(ISNUMBER([@분석실적])),"INVALID", IF([@예산]=0,"NO_BUDGET","OK")))
=IF([@데이터상태]<>"OK", "", IF([@계정유형]="수익", [@예산]-[@분석실적], [@분석실적]-[@예산]))
=IF([@데이터상태]<>"OK", "", [@불리금액]/[@예산])
- 모든 계산은 2-4에서 만든
분석실적을 사용.키도 2-4에서 만들어 둠. [@분석실적]="":분석실적은 수식 결과라 빈칸이""(빈 문자열).ISBLANK로 확인하면 FALSE가 나와서INVALID로 잘못 표시됨.
| 상태 | 의미 |
|---|---|
| MISSING | 통신비 9월처럼 비어 있는 경우. 계산하면 0원으로 취급되어 “돈을 안 썼다”가 됨. |
| INVALID | 숫자가 아닌 값이 들어 있는 경우. |
| NO_BUDGET | 예산이 0인 경우. 0으로 나누면 오류가 나므로 미리 막음. 신규 계정에서 자주 나옴. |
| OK | 계산 진행. |
3-3비율만 보면 목록이 뒤집힘
2026-09만 필터한 뒤 두 번 정렬해 봅니다.
| 순위 | 차이율로 정렬 | 차이율 | 불리금액으로 정렬 | 불리금액(원) |
|---|---|---|---|---|
| 1 | 수선비 | +313.3% | 제품매출 | 338,448,000 |
| 2 | 도서인쇄비 | +120.0% | 수선비 | 94,000,000 |
| 3 | 복리후생비 | +70.3% | 원재료비 | 54,092,000 |
| 4 | 출장비 | +26.0% | 복리후생비 | 43,567,000 |
| 5 | 지급수수료 | +24.8% | 지급수수료 | 29,802,000 |
- 차이율 목록에만 있는 것 : 도서인쇄비(120%, 360만 원), 출장비(26%, 390만 원). 원인을 조사하는 인건비가 더 듦.
- 금액 목록에만 있는 것 : 제품매출, 원재료비. 원재료비는 차이율 3.4%라 비율 목록에서는 10위권. 그런데 금액은 5,400만 원.
3-4금액 × 비율, 그리고 중대금액 예외
| 조건 | 왜 필요한가 | 이번 데이터에서 |
|---|---|---|
| AND (비율과 금액 둘 다) | 비율만 큰 작은 계정을 걸러냄 | 도서인쇄비(120%/360만)와 출장비(26%/390만)가 걸러짐 |
| OR 중대금액 | 비율은 작지만 금액이 큰 계정을 살림 | 원재료비(3.4%/5,409만)와 제품매출(9.95%/3.38억)이 살아남 |
2026-09 불리 방향 계정 — 금액 × 비율 판정 구역
가로: 불리금액(원, 로그 눈금) · 세로: 차이율(로그 눈금) · 점에 마우스를 올리면 값이 보입니다
실습 파일 4-2.피벗만들기의 예실 표, 2026-09 불리금액이 양수인 12개 계정. 임차료(0원)는 제외.
| 기준 | 값 | 의미 |
|---|---|---|
당월차이율기준 | 10% | 통상적인 월 변동 폭을 넘는 수준 |
당월금액기준 | 10,000,000원 | 사람이 시간을 들여 조사할 가치가 있는 최소 금액 |
당월중대금액기준 | 50,000,000원 | 비율과 무관하게 보고해야 하는 금액 |
플래그 수식
=IF([@데이터상태]<>"OK", "DATA_CHECK", IF([@불리금액]>=당월중대금액기준, "확인", IF(AND([@차이율]>=당월차이율기준, [@불리금액]>=당월금액기준), "확인", IF(AND(-[@차이율]>=당월차이율기준, -[@불리금액]>=당월금액기준), "유리", ""))))
위에서 아래로 읽으면
- 데이터가 이상하면
DATA_CHECK - 중대금액을 넘으면 그것만으로
확인 - 비율과 금액을 둘 다 넘으면
확인 - 반대 방향으로 둘 다 넘으면
유리표시만 하고 경보는 보내지 않음 - 그 밖은 공백
| 플래그 | 건수 | 계정 |
|---|---|---|
| 확인 | 7 | 제품매출, 원재료비, 복리후생비, 광고선전비, 지급수수료, 운반비, 수선비 |
| DATA_CHECK | 1 | 통신비 |
| 유리 | 0 | (교육훈련비·외주가공비는 유리 방향이지만 기준 미달) |
| 공백 | 12 | — |
- 2장에서 통신비를 비워 둔 덕분에
DATA_CHECK로 표시됨. 0으로 채웠다면 “유리”로 보였을 것. - 2장에서 원천 확인한 수선비는 실제 사건이므로
확인대상에 그대로 들어감.
3-5기준값은 Settings에서 이름으로
기준값을 수식 안에 직접 쓰지 않습니다.
- Settings 시트에 기준값을 정리하고, “이름 관리자” 설정
- 설정된 이름 그대로 수식에서 사용 가능
- 이름
당월차이율기준- 참조 대상
=Settings!$B$7
- 기준을 바꿀 때는 날짜와 이유를 기록하여 근거를 남기는 것이 좋음.
- 소리 없이 바꾸면 지난달 보고와 이번 달 보고를 비교할 수 없음.
3-6보이게 만들기
조건부 서식
=$L2="확인"- 연한 빨강 채우기
=$L2="DATA_CHECK"- 회색 채우기
=$L2="유리"- 연한 파랑 채우기
L열 = 플래그 열 위치에 맞게 바꿔서 입력
$는 열 문자 앞에만 붙임. 행 번호 앞에도 붙이면 첫 행 값으로 전체가 칠해짐. 가장 흔한 실수.피벗과 슬라이서
- 행
- 계정유형 → 계정명
- 값
- 예산 합계 / 분석실적 합계 / 불리금액 합계
- 필터
- 연도, 월번호
- 슬라이서
- 담당부서, 플래그
- 값에는
실적이 아니라분석실적을 넣어야 보정 내용이 반영됨. - 담당부서 슬라이서를 누르면 “우리 부서에서 확인할 항목”만 추출됨.
- 세로형 데이터 구조라 연도·월번호·담당부서·플래그 어느 것이든 필드로 바로 쓸 수 있음.
4비교 축을 늘려 구조적·일시적 판별
- 3장의 플래그는 “예산 대비”라는 한 가지 기준. 이것만으로는 한 번인지 계속인지, 매년 그런 건지, 예산이 잘못된 건지 구분이 안 됨.
- 4장에서는 3장에서 깃발이 꽂힌 7건의 성격을 가르고, 깃발이 안 꽂혔지만 봐야 하는 것까지 다시 찾음.
실습 파일 : 4-1.비교축 확장으로 구조적, 일시적 판별 (4-1 ~ 4-6), 4-2.피벗만들기 (4-7)
4-1예산은 진실이 아니라 의견
예산은 작년 말에 사람이 정한 숫자. 예산이 틀렸을 수도 있습니다.
예산을 빡빡하게 잡았다면
실적이 작년보다 좋아졌는데도 예산 초과. 매달 빨간불이 켜지고, 사람들은 곧 무시함.
예산을 느슨하게 잡았다면
실적이 작년보다 나빠지는데도 예산 안쪽. 경보가 한 번도 울리지 않음. 이게 더 위험함.
그래서 비교 축을 다섯 개로 늘립니다.
| 축 | 답하는 질문 | 이 축이 없으면 |
|---|---|---|
| ① 당월 예산 대비 | 이번 달 계획대로 됐나 | (3장에서 만듦) |
| ② 전년 동월 대비 | 계절성인가, 진짜 악화인가 | 명절·냉난방이 매년 경보로 울림 |
| ③ 전월 대비 | 이번 달에 뭔가 생겼나 | 단발 사건을 구조로 오판 |
| ④ 누계 예산 대비 | 지금까지 쌓인 격차는 얼마인가 | “이번 달은 괜찮았습니다”로 끝남 |
| ⑤ 예산 여유율 | 예산 자체가 믿을 만한가 | 느슨한 예산 뒤에 숨은 악화를 못 봄 |
예실 표에서 나옴. 세로형이라 “12개월 전”, “1월부터 이번 달까지” 같은 조건을 월 열 하나로 처리할 수 있음.4-2전년 동월과 전월
2-4에서 만든 키 열을 사용합니다. “12개월 전 키”를 만들어서 찾습니다.
=IFERROR(INDEX([분석실적], MATCH([@계정코드]&"|"&TEXT(EDATE([@월],-12),"yyyy-mm"), [키], 0)), "")
=IFERROR(INDEX([분석실적], MATCH([@계정코드]&"|"&TEXT(EDATE([@월],-1),"yyyy-mm"), [키], 0)), "")
EDATE([@월], -12): 12개월 전 날짜 반환MATCH는 중복이 있으면 첫 번째만 가져옴. 2장에서 소모품비 중복을 합산해 없앴기 때문에 믿을 수 있는 값. 중복을 방치했다면 조용히 틀림.
=IF(OR([@전년동월실적]="", [@데이터상태]<>"OK"), "", IF([@계정유형]="수익", [@전년동월실적]-[@분석실적], [@분석실적]-[@전년동월실적]))
=IF([@전년대비금액]="", "", [@전년대비금액]/[@전년동월실적])
- 불리금액과 같은 규칙으로 부호를 통일. 전년보다 나빠졌으면 양수.
- 예산 대비와 전년 대비를 같은 방향으로 읽을 수 있음.
4-3누계 — “이번 달은 괜찮았습니다”를 막음
=SUMIFS([예산], [계정코드], [@계정코드], [연도], [@연도], [월번호], "<="&[@월번호])
=SUMIFS([분석실적], [계정코드], [@계정코드], [연도], [@연도], [월번호], "<="&[@월번호])
=COUNTIFS([계정코드], [@계정코드], [연도], [@연도], [월번호], "<="&[@월번호], [데이터상태], "<>OK")
=IF([@누계결측]>0, "", IF([@계정유형]="수익", [@누계예산]-[@누계실적], [@누계실적] - [@누계예산]))
=IF([@누계불리금액]="", "", [@누계불리금액]/[@누계예산])
=IF([@누계결측]>0, "DATA_CHECK", IF([@누계불리금액]>=누계중대금액기준, "확인", IF(AND([@누계차이율]>=누계차이율기준, [@누계불리금액]>=누계금액기준), "확인", "")))
누계결측:SUMIFS는 빈칸을 그냥 건너뜀. 통신비는 8개월치만 더한 값이 9개월 누계처럼 보이게 됨. 그래서 결측이 하나라도 있으면 누계를 계산하지 않음.- 누계 기준은 당월 기준보다 비율은 더 민감하게, 금액은 더 크게 잡음.
| 기준 | 당월 | 누계 | 왜 다른가 |
|---|---|---|---|
| 차이율 | 10% | 2.5% | 9개월 평균이라 한 달의 튐이 희석됨 |
| 금액 | 1,000만 | 5,000만 | 9개월 구간이므로 금액 기준을 올림 |
| 중대금액 | 5,000만 | 2억 | 같은 이유 |
| 계정 | 당월 | 누계 | 의미 |
|---|---|---|---|
| 제조경비 | — | 확인 | 매월 +3% 수준이라 당월 기준은 통과. 9개월 쌓여 7,417만 원 |
| 운반비 | 확인 | — | 7월부터의 악화라 누계는 아직 기준 미만 |
| 통신비 | DATA_CHECK | DATA_CHECK | 결측이 당월과 누계 둘 다 막음 |
2026년 누계 불리금액 — 제조경비 vs 운반비
단위: 백만원 · 점선은 누계금액기준 5,000만 원 · 점에 마우스를 올리면 값이 보입니다
- 제조경비 9월은 차이율 2.9%, 금액 870만 원. 어떤 당월 기준으로도 안 걸림. 그런데 9개월 누계는 7,417만 원.
4-4예산 여유율 — 예산 자체를 검증
처음 생각할 수 있는 규칙: “예산 대비는 정상인데 전년 대비 나빠졌으면 예산이 느슨한 것이다.”
- 이 규칙을 걸어 보면 급여와 노무비가 걸림. 급여는 전년 대비 +5.7%, 노무비는 +3.5%.
- 그런데 급여가 오른 건 연봉 인상이고, 예산에도 인상이 반영되어 있음. 느슨한 게 아니라 계획대로 된 것.
그래서 “예산을 작년 실적보다 얼마나 여유 있게 잡았나”를 따로 봅니다.
=IF([@전년동월실적]="", "", ([@예산]-[@전년동월실적])/[@전년동월실적])
| 계정 | 전년 대비 | 예산 여유율 | 읽는 법 |
|---|---|---|---|
| 급여 | +5.7% | +5.7% | 인상분만큼 예산도 올렸음 → 계획대로 |
| 노무비 | +3.5% | +4.9% | 같음 → 계획대로 |
| 외주가공비 | +14.8% | +20.7% | 실적이 15% 늘었는데 예산을 21% 올려 뒀음 → 느슨 |
| 광고선전비 | −12.3% | −21.9% | 실적은 줄었는데 예산을 더 많이 줄였음 → 빡빡 |
외주가공비 — 경보가 울리지 않는 악화
- 작년 9월 실적 3억 8,111만 원 → 올해 9월 4억 3,749만 원. 14.8% 증가. 원가가 오르고 있음.
- 올해 예산은 4억 6,000만 원. 작년 실적보다 20.7% 높게 잡혀 있음.
- 그래서 실적은 예산 안쪽. 차이율 −4.9%, 유리. 3장의 플래그에는 안 걸림.
예산여유율기준 15%는 조직마다 다름. 인건비는 5~8%가 정상 범위, 변동이 큰 계정은 20%도 정상일 수 있음.4-5연속 개월 수와 악화 여부
=COUNTIFS([계정코드], [@계정코드], [연도], [@연도], [월번호], ">="&MAX(1, [@월번호]-연속개월기준+1), [월번호], "<="&[@월번호], [플래그], "확인")
=IF(OR([@전년대비율]="", [@전년대비금액]=""), FALSE, AND([@전년대비율]>=전년대비악화기준, [@전년대비금액]>=당월금액기준))
연속개월: 최근 3개월 중 몇 번확인이 떴는지. 3이면 3개월 연속.악화: 전년 대비 비율과 금액을 둘 다 봄. 3장과 같은 논리. 비율만 보면 출장비(+51%, 641만 원) 같은 작은 계정이 걸림.- 전년 데이터가 없는 2025년 행은
FALSE로 둠. 빈칸끼리 비교하면 오류가 남.
| 계정 | 7월 | 8월 | 9월 | 연속 | 전년 대비 | 악화 |
|---|---|---|---|---|---|---|
| 지급수수료 | 확인 | 확인 | 확인 | 3 | +45.1% / +4,659만 | TRUE |
| 운반비 | 확인 | 확인 | 확인 | 3 | +24.3% / +1,985만 | TRUE |
| 원재료비 | 확인 | 확인 | 확인 | 3 | +7.5% / +1.16억 | TRUE |
| 제품매출 | 확인 | 확인 | 확인 | 3 | +4.4% / +1.41억 | TRUE |
| 광고선전비 | 확인 | 확인 | 확인 | 3 | −12.3% / −1,654만 | FALSE |
| 수선비 | — | — | 확인 | 1 | +361.2% / +9,712만 | TRUE |
| 복리후생비 | — | — | 확인 | 1 | +1.0% / +109만 | FALSE |
광고선전비는 3개월 연속 예산 초과. 구조적 문제인가?
- 전년 대비로는 12.3% 개선. 실적은 좋아지는데 예산을 더 많이 줄여서 초과한 것.
4-6판별표
다섯 축을 합쳐서 판별표 열에 판정합니다. 위에서부터 순서대로 확인하고, 처음 맞는 조건에서 멈춥니다.
| 순서 | 조건 | 판정 | 해야 할 일 |
|---|---|---|---|
| 1 | 데이터상태 ≠ OK | 데이터 확인 | 원천 재확인. 판정하지 않음 |
| 2 | 전년 동월 데이터 없음 | 비교 불가 | (2025년 행) |
| 3 | 당월 플래그 없음 + 악화 + 예산여유율 ≥ 15% | 예산이 느슨 | 예산 편성 근거를 다시 봄 |
| 4 | 당월 플래그 없음 + 누계 플래그 있음 | 이미 벌어진 격차 | 남은 달에 만회 가능한지 봄 |
| 5 | 당월 플래그 없음 (그 외) | 정상 | — |
| 6 | 당월 플래그 + 전년 대비 3% 이상 개선 | 예산이 빡빡 | 예산 가정을 다시 봄 |
| 7 | 당월 플래그 + 3개월 연속 + 악화 | 구조적 | 구조를 바꿔야 함 |
| 8 | 당월 플래그 + 전년 대비 ±3% 이내 | 계절성 | 월별 예산 배분을 다시 봄 |
| 9 | 그 외 당월 플래그 | 일시적 | 단발 사건을 찾음 |
=IF([@데이터상태]<>"OK", "데이터 확인", IF([@전년동월실적]="", "비교 불가", IF(AND([@플래그]<>"확인", [@악화], [@예산여유율]>=예산여유율기준), "예산이 느슨", IF(AND([@플래그]<>"확인", [@누계플래그]="확인"), "이미 벌어진 격차", IF([@플래그]<>"확인", "정상", IF([@전년대비율]<=-전년대비악화기준, "예산이 빡빡", IF(AND([@연속개월]>=연속개월기준, [@악화]), "구조적", IF(ABS([@전년대비율])<전년대비악화기준, "계절성", "일시적"))))))))
- 2번 줄
비교 불가를 반드시 넣음. 2025년 행에는 전년이 없어서, 이 줄이 없으면ABS("")에서#VALUE!가 쏟아짐. - 순서가 논리.
예산이 빡빡(6번)을구조적(7번)보다 위에 둬야 함. 광고선전비는 3개월 연속이면서 전년 대비 개선인데, 순서를 바꾸면 구조적으로 오판됨. - Excel 2019 이상이면
IFS로 줄여 써도 됨. 판단 순서는 같음.
| 판정 | 건수 | 계정 |
|---|---|---|
| 구조적 | 4 | 제품매출, 원재료비, 지급수수료, 운반비 |
| 일시적 | 1 | 수선비 |
| 계절성 | 1 | 복리후생비 |
| 예산이 빡빡 | 1 | 광고선전비 |
| 예산이 느슨 | 1 | 외주가공비 |
| 이미 벌어진 격차 | 1 | 제조경비 |
| 데이터 확인 | 1 | 통신비 |
| 정상 | 10 | — |
- 3장의
확인7건이 구조적 4 / 일시적 1 / 계절성 1 / 예산이 빡빡 1로 나뉨. - 3장에서 깃발이 안 꽂혔던 외주가공비, 제조경비가 새로 드러남.
- 수선비는 일시적이지만 누계 초과가 8,909만 원. “일시적이니 넘어가도 되나, 연간 예산을 넘길 것인가”는 따로 봐야 함.
4-7그림으로 확인 — 세로형을 피벗으로 펼쳐 보기
세로형은 저장하고 계산하는 형태. 여러 달을 한눈에 보는 가로 모양은 피벗이 언제든 만들어 줌. 원본 가로형 시트로 돌아갈 필요가 없습니다.
스파크라인 — 계정별 21개월 모양 4-2 파일 스파크라인 시트
- 행 : 계정명 / 열 : 연도, 월번호 / 값 : 분석실적 합계
- 피벗 오른쪽 빈 열의 첫 칸 선택
- [삽입] → [스파크라인] → [꺾은선형]데이터 범위 = 피벗에서 그 계정 줄의 21개월 값
- 아래로 채우기
- 값에
실적을 넣으면 접대비 6월이 보정 전 값(72,586,000)으로 튀어 보임. 보정이 반영된분석실적을 사용. - 세로형 데이터에서 만든 피벗이 가로 모양을 만들어 주므로, 그 위에 스파크라인을 그리면 됨.
- 스파크라인용 피벗은 필드를 바꾸지 않고 고정해서 씀. 필드를 바꾸면 칸 위치가 달라져 그림이 어긋남.
히트맵 — 20계정 × 21개월을 한 화면에 4-2 파일 히트맵 시트
- 행 : 계정명 / 열 : 연도, 월번호 / 값 : 차이율 (평균)
- 값 영역 선택 → [홈] → [조건부 서식] → [색조] → 녹-흰-빨 3색
지급수수료·운반비 줄의 오른쪽 끝
수선비 2026-09
복리후생비 1월·9월 (2025년, 2026년 모두)
(선택) 분기 비교 — 전분기 대비 실습 파일에는 없음 · 시간이 남을 때
- 값 영역 마우스 우클릭 → [값 표시 형식] → [% 차이]
- 기준 필드 = 분기, 기준 항목 = (이전)
| 계정 | 2026 Q2 | 2026 Q3 | % 차이 |
|---|---|---|---|
| 지급수수료 | 360,225,000 | 429,758,000 | +19.3% |
| 운반비 | 258,553,000 | 296,706,000 | +14.8% |
| 원재료비 | 4,854,400,000 | 4,995,090,000 | +2.9% |
| 제품매출 | 10,076,669,000 | 9,394,892,000 | −6.8% |
- 수선비는 이 목록에 없음. 9월 한 달만 튀었으니 분기로 묶으면 희석됨.
5탐지 결과를 원인 목록으로
- 표는 “어디가, 얼마나, 언제부터, 반복인지”까지만 알려 줌. “왜”는 표 안에 없음.
- 원인은 단정하는 것이 아니라 가설로 세우고, 확인할 데이터를 붙여서 담당 부서에 묻는 것.
5-1이 데이터로는 원인을 계산할 수 없음
원재료비가 5,400만 원 초과.
- 단가가 올랐을 수도, 많이 썼을 수도, 비싼 원료 비중이 늘었을 수도 있음.
- 이걸 가르려면 수량과 단가가 따로 있어야 함. 실습 데이터에는 금액만 있음.
어디가, 얼마나, 언제부터, 반복인가 일회인가
왜 → 원인은 계산이 아니라 가설 + 확인
| 관찰 | 가능한 원인 | 가르려면 필요한 데이터 |
|---|---|---|
| 원재료비 초과 | 투입단가 상승 / 수율 악화 / 고가 원료 비중 증가 | 품목별 단가, 수율, 투입 구성비 |
| 제품매출 미달 | 판매량 감소 / 단가 인하 / 선적 이연 | 제품별 수량, 평균판매단가, 수주잔고 |
| 지급수수료 증가 | 수수료율 인상 / 거래량 증가 / 신규 계약 | 계약별 수수료율, 거래량 |
- 오른쪽 열이 부서에 요청할 목록.
- “원인 분석”은 원인을 알아맞히는 것이 아니라 원인을 확인할 수 있는 상태로 만드는 것.
5-2원인 목록의 다섯 칸
| 칸 | 내용 | 채우는 사람 |
|---|---|---|
| 관찰 | 표에서 읽은 사실. 금액·비율·기간 | 엑셀 3장 |
| 판별 | 구조적 / 일시적 / 계절성 / 예산 문제 / 데이터 문제 | 엑셀 4장 판별표 |
| 가설 | 서로 구분 가능한 2~3개 | AI가 초안, 사람이 선택 |
| 필요 데이터 | 각 가설을 확인하거나 무너뜨릴 자료 | AI가 초안, 사람이 확정 |
| 담당·기한 | 누가, 언제까지 | 사람이 정함 |
- 가설은 서로 구분 가능해야 함. “비용이 늘었다”와 “지출이 증가했다”는 같은 말.
- 좋은 가설 두 개는 확인할 데이터가 서로 다름. “단가 상승”과 “물량 증가”는 확인 데이터가 다르므로 진짜 두 개.
5-3목록 좁히기 — 두 구역으로 나눔
실제 회사에서는 확인 대상이 40~50건 나옵니다. 전부 조사하면 아무것도 조사하지 못합니다. 불리금액 순으로 좁히면 되지만, 금액 순 하나로만 만들면 놓치는 것이 생깁니다.
- 외주가공비 : 당월 불리금액 −2,251만 원(유리). 금액 순위에 올라올 수 없음. 그런데 원가가 15% 오르는 중.
- 제조경비 : 당월 870만 원. 순위 아래쪽. 그런데 누계 7,417만 원.
| 순위 | 계정 | 불리금액 | 차이율 | 판별표 | 담당부서 |
|---|---|---|---|---|---|
| 1 | 제품매출 | 338,448,000 | +10.0% | 구조적 | 영업 |
| 2 | 수선비 | 94,000,000 | +313.3% | 일시적 | 생산 |
| 3 | 원재료비 | 54,092,000 | +3.4% | 구조적 | 구매 |
| 4 | 복리후생비 | 43,567,000 | +70.3% | 계절성 | 경영지원 |
| 5 | 지급수수료 | 29,802,000 | +24.8% | 구조적 | 경영지원 |
| 6 | 운반비 | 16,587,000 | +19.5% | 구조적 | 영업 |
| 계정 | 당월 불리금액 | 걸린 축 | 판별표 | 담당부서 |
|---|---|---|---|---|
| 제조경비 | 8,703,000 | 누계 +74,172,000 | 이미 벌어진 격차 | 생산 |
| 외주가공비 | −22,511,000 | 예산여유율 +20.7%, 전년 대비 +14.8% | 예산이 느슨 | 생산 |
| 통신비 | — | 실적 결측 | 데이터 확인 | 경영지원 |
| 계정 | 불리금액 | 판별표 | 이유 |
|---|---|---|---|
| 광고선전비 | 12,859,000 | 예산이 빡빡 | 실적은 전년보다 12.3% 개선. 문제는 예산 편성 |
- [B] 구역이 있다는 것 자체가 핵심. 금액 순 목록 하나만 만들면 이 세 건이 통째로 사라짐.
- 그중 외주가공비는 이번 데이터에서 가장 중요한 항목.
원인목록 시트 만들기 4-2 파일에 이어서 진행
예실표에서 필터: 연도 = 2026, 월번호 = 9- 판별표 필터: “정상”, “예산이 빡빡” 체크 해제 → 9행 남음
- 필요한 열만 복사: 계정명, 계정유형, 월, 예산, 분석실적, 불리금액, 차이율, 누계불리금액, 누계차이율, 연속개월, 전년대비율, 판별표, 담당부서
- 새 시트 추가 → 시트 이름 “원인목록”
- A2셀에 [선택하여 붙여넣기] → [값]
- A1셀에 “구역” 열 추가 → [A] / [B] 입력
- 표 안에 커서 → [Ctrl+T] → 표 이름 “원인목록”
- 불리금액 내림차순 정렬
- 오른쪽에 열 추가: 가설1, 가설2, 필요데이터, 기한, 구분← 사람이 채우는 칸
- 값으로 붙여넣음. 원인목록은 이번 달 보고용 사본. 예실 표가 바뀌어도 이번 달 목록은 그대로 남아야 함.
- 광고선전비는 원인목록에 넣지 않고 따로 “예산 편성 검토” 메모로 남김.
5-4AI에게 무엇을 주고 무엇을 받는가
파일을 올리지 않음
- 계산은 이미 엑셀이 정확하게 해 놓았음. 420행을 올리면 AI가 숫자를 다시 옮겨 적으면서 틀릴 수 있음.
- 무료 계정은 파일 업로드 한도가 있음.
- → 원인목록 9행만 복사해서 붙여넣음.
| 단계 | 누가 | 이유 |
|---|---|---|
| 차이·플래그·판별 계산 | 엑셀 | 정확해야 하고, 다음 달에 다시 써야 함 |
| 목록 좁히기 | 엑셀 | 규칙으로 해야 재현됨 |
| 가설 만들기 | AI | 사람이 놓치는 각도를 넓혀 줌 |
| 필요 데이터·질문 초안 | AI | 초안이 있으면 검토가 빠름 |
| 가설 선택, 담당·기한 | 사람 | 책임이 따르는 판단 |
표준 프롬프트
[역할] 월 예실 점검 결과를 검토하는 분석 보조자. 읽는 사람은 재무 비전공자다. [데이터] 2026년 9월 예실 점검에서 확인 대상으로 분류된 계정이다. 단위는 원. 계정유형은 수익/매출원가/판관비. "불리금액"은 양수면 불리(수익은 미달, 비용은 초과)를 뜻한다. "판별표"는 우리가 이미 정한 분류다. 바꾸지 말고 그대로 받아들여라. (여기에 원인목록 9행 붙여넣기 — 머리글 포함) [요청] ① 계정별로 원인 가설 2~3개. 서로 확인 데이터가 다른 가설로 만들 것. ② 각 가설을 확인하거나 무너뜨릴 데이터를 1~2개. ③ 담당 부서에 물을 질문 한 줄. 예/아니오로 끝나지 않는 질문으로. [금지] - 표에 없는 수치를 추가하지 말 것 - 원인을 단정하지 말 것. 모든 원인은 "가설:"로 시작할 것 - 앞으로의 전망·예측을 쓰지 말 것 - "심각한", "위험한" 같은 형용사를 쓰지 말 것 - 판별표 결과를 바꾸거나 새로 제안하지 말 것 [형식] 계정별로 세 줄: 가설 / 필요 데이터 / 질문
[금지]가 없으면 AI는 거의 반드시 원인을 단정하고 전망을 씀.
예) “원자재 가격 상승으로 인한 것으로 판단되며 4분기에도 지속될 것으로 예상됩니다” → 표에 원자재 가격도, 4분기 데이터도 없음.- 판별표를 바꾸지 말라고 하는 이유 : 판별표는 우리가 정한 규칙의 결과. AI가 다시 분류하면 기준이 매달 달라짐.
AI 답변 검수 네 가지
| # | 확인 | 걸리면 |
|---|---|---|
| 1 | 답변의 숫자가 내 표와 한 자리도 다르지 않은가 | 그 답변 전체를 버림 |
| 2 | 원인을 단정한 문장이 있는가 | “가설:”로 고쳐 씀 |
| 3 | 표에 없는 외부 수치·전망이 섞였는가 | 지움 |
| 4 | 가설마다 확인 데이터가 서로 다른가 | 같으면 가설이 하나. 다시 요청 |
AI가 자주 만드는 나쁜 답
| ✕ 나쁜 답 | 왜 나쁜가 | ✓ 고치는 방법 |
|---|---|---|
| “원자재 가격 상승 때문입니다” | 표에 없는 원인을 단정 | “가설: 투입단가 상승 → 확인: 품목별 단가 추이” |
| “4분기에도 지속될 것으로 보입니다” | 예측 | 삭제 |
| “전반적인 비용 관리 강화가 필요합니다” | 정보가 없음 | 계정과 데이터를 지목하게 다시 요청 |
| “영업팀의 실적 관리가 미흡했습니다” | 부서·사람을 지목 | “제품별 수량·단가를 영업팀에 요청” |
- 경보와 보고는 부서를 비난하는 도구가 아님. 부서 이름은 “누구에게 물어볼지”에만 씀.
- 비난 도구로 쓰이면 다음 달부터 데이터가 안 옴.
AI 답변 반영
- 가설 두 개 고르기검수를 통과한 가설 중 2개를 골라
가설1,가설2칸에 입력. - 필요 데이터 확정
필요데이터는 AI 초안을 보고 사람이 확정. - 기한·구분은 사람이
기한,구분(예: 율 인상 / 물량 증가 구분)은 사람이 정함.
6보고 문장 만들기
6-1세 줄이면 충분
- 경영진이 한 항목에 쓰는 시간은 30초 정도. 세 줄이 한계.
- 첫 줄이 없으면 못 믿고, 둘째 줄이 없으면 급한지 모르고, 셋째 줄이 없으면 아무 일도 일어나지 않음.
- 셋째 줄이 빠진 보고가 가장 많음. “확인이 필요합니다”로 끝나면 아무도 확인하지 않음.
1~9월 누계 초과 69,636,000원(6.4%).
예산 기준으로는 확인 대상이 아니다.
- “예산 안쪽인데 보고합니다”를 써야 하는 문장.
- 첫 줄에서 “확인 대상이 아니다”를 먼저 인정하고, 둘째 줄을 “그러나”로 시작해서 뒤집음.
6-2넣지 않을 것
| ✕ 금지 | 이유 | ✓ 대신 |
|---|---|---|
| “4분기에도 지속될 것으로 보입니다” | 예측은 보고의 일이 아님 | 삭제 |
| “원자재 가격 상승 때문입니다” | 표에 없는 원인 단정 | “가설: 투입단가 상승 / 확인: 품목별 단가” |
| “심각한 수준입니다” | 판단을 형용사로 대신함 | 금액과 기준을 씀 |
| “특이사항 없습니다” | 확인한 것과 안 한 것이 구분 안 됨 | “확인 대상 0건(기준: 차이율 10% & 금액 1천만)” |
| “영업팀 관리가 미흡했습니다” | 사람·부서 지목 | “제품별 수량·단가를 영업팀에 요청” |
| “약 3천만 원 정도” | 숫자를 뭉갬 | “29,802,000원” |
6-3수식이 문장을 씀
원인목록 표에 열 두 개를 추가합니다.
=IF([@계정유형]="수익", IF([@불리금액]>0, "미달", "초과 달성"), IF([@불리금액]>0, "초과", "절감"))
="[관찰] "&TEXT([@월],"m")&"월 "&[@계정명]&" 실적 "&TEXT([@분석실적],"#,##0")&"원, 예산 "&TEXT([@예산],"#,##0")&"원 대비 "&TEXT(ABS([@불리금액]),"#,##0")&"원 "&[@방향어]&"("&TEXT(ABS([@차이율]),"0.0%")&")."
&CHAR(10)&" 1~"&TEXT([@월],"m")&"월 누계 "&TEXT(ABS([@누계불리금액]),"#,##0")&"원 "&IF([@누계불리금액]>0,"불리","유리")&"("&TEXT(ABS([@누계차이율]),"0.0%")&")."
&CHAR(10)&"[패턴] 최근 3개월 중 "&[@연속개월]&"개월 확인 대상. 전년 동월 대비 "&TEXT(ABS([@전년대비율]),"0.0%")&IF([@전년대비율]>0," 악화"," 개선")&". "&[@판별표]&"으로 판단."
&CHAR(10)&"[확인] "&[@담당부서]&"에 요청: "&[@필요데이터]&". "&TEXT([@기한],"m/d")&"까지. ("&[@구분]&")"- 한 줄로 입력수식이 길어서 줄을 나눠 적었음. 엑셀에는 한 줄로 이어서 입력. (복사 버튼은 한 줄로 붙여 줌. 수식 입력줄에서 Alt+Enter로 줄을 나눠도 됨)
- 텍스트 줄 바꿈 켜기셀 서식에서 [맞춤] → [텍스트 줄 바꿈]을 켜야
CHAR(10)줄바꿈이 보임. - 숫자는 절댓값, 방향은 한국어 단어
ABS로 숫자를 쓰고 방향은 미달/초과/절감으로 씀.-338,448,000원보다338,448,000원 미달이 읽기 쉬움. - 부서를 먼저, 요청 내용을 뒤에조사(을/를)가 붙는 자리에 변수를 두지 않는 것이 한국어 문장 조립의 요령.
- 재료의 일부는 사람이 채움
[@필요데이터],[@기한],[@구분]은 5장에서 사람이 채운 칸. 수식이 문장을 쓰지만, 재료의 일부는 사람이 채움. - [A] 구역용 수식[B] 구역은 “예산 대비 정상인데 보고하는 이유”를 먼저 써야 해서 뼈대가 다름. [B] 구역은 손으로 씀.
6-4AI로 다듬기 — 숫자는 건드리지 못하게
[역할] 사내 보고 문장을 다듬는 편집자. [원문] (아래 3줄) [요청] ① 문장을 짧게 ② 중복 표현 제거 ③ 경영진이 30초에 읽을 수 있게 [금지] 숫자·단위 변경, 새로운 원인 추가, 예측 표현, 과장 형용사, 부서 비난 [유지] 모든 숫자와 단위 / [관찰]·[패턴]·[확인] 구조 / 담당과 기한 [출력] 다듬은 3줄만. 설명 없이.
- 다듬은 결과를 받으면 숫자만 다시 대조. 표현은 나아졌는데 숫자가 바뀌어 있는 경우가 실제로 있음.
- Ctrl+F로 금액 하나만 찾아봐도 충분.
6-5보고문 확인
- 지급수수료 세 줄을 손으로 먼저 써 봄
- 보고문 열에서 만든 지급수수료 문장과 숫자가 같은지 비교
- [B] 구역 외주가공비는 손으로 씀“확인 대상이 아니다” → “그러나” 순서
- 한 건을 소리 내어 읽어 봄
| 확인 | ○/× |
|---|---|
| 제품매출 문장에 “미달”이 들어갔는가 | |
| 30초 안에 읽을 수 있는가 | |
| 금액과 비율이 둘 다 있는가 | |
| 예측·단정·과장 형용사가 없는가 | |
| 누가 언제까지 무엇을 할지 들어 있는가 |
7정리
7-11-1 표에서 판단하기 어려웠던 것들은 어떻게 풀렸나
| 1-1에서 본 것 | 실제로는 | 어디서 풀렸나 |
|---|---|---|
| 통신비 −100% (좋은 뉴스처럼 보임) | 데이터 결측 | 2-3 빈칸 확인 → 3장 DATA_CHECK |
| 맨 아래 소모품비 행 | 7월 추가 계상분 중복 | 2-2 행 수·키 중복 → 그룹화 |
| 접대비 −6.2% (정상처럼 보임) | 6월에 누계 혼입 → 누계가 왜곡 | 2-4 평균 대비 배수 → 원천 확인 → 보정 시트·분석실적 |
| 수선비 +377% | 실제 설비 고장. 일시적 | 2-4 원천 확인 → 3장 플래그 → 4장 일시적 |
| 도서인쇄비 +122% | 금액 362만 원, 조사 가치 낮음 | 3-3·3-4 금액×비율 AND로 걸러짐 |
| 복리후생비 +112% | 명절, 매년 9월 반복 | 4장 전년 동월 대비 → 계절성 |
| 제품매출 −2.1% (전월 대비 작아 보임) | 예산 대비 3.4억 미달, 3개월 연속 | 3장 계정유형별 불리금액 → 4장 구조적 |
| 외주가공비 −1.1% (전월 대비 정상) | 전년 대비 +14.8%, 예산이 느슨 | 4-4 예산 여유율 |
| 제조경비 −0.1% (변화 없음) | 9개월 누계 7,417만 원 초과 | 4-3 누계 |
- 1-1의 전월 대비 표에서는 9개 중 어느 것도 제대로 판단할 수 없었음.
- 세로형 표 하나에 오류 점검 → 플래그 → 비교 축 → 판별 규칙을 차례로 쌓아서 모두 구분할 수 있게 됨.
- 다음 달에는 원본 시트에 열 하나를 붙이고 [모두 새로 고침]. 보정할 것이 있으면 보정 시트에 한 줄 추가.
7-2핵심 원칙
- 원천은 고치지 않는다세로형 계산용 표를 따로 만든다.
- 세로형으로 저장·계산하고, 가로 모양은 피벗으로 펼쳐 본다
- 행 수가 같다고 데이터가 같은 것은 아니다
- 오류를 먼저 걸러낸다근거가 있으면 보정 시트에 기록해 분석실적에 반영, 근거가 없으면 비워 두고 표시.
- 유리·불리는 계정유형이 결정한다절댓값으로 판정하지 않는다.
- 비율과 금액을 함께 본다기준값은 Settings에 두고 이력을 남긴다.
- 예산은 의견이다전년 동월과 예산 여유율로 예산 자체를 검증한다.
- 계산은 엑셀이, 가설은 AI가, 판단과 책임은 사람이