자동으로 만든 엑셀이 맞는지 셀 단위로 검증하기

업무 자동화4분 읽기

자동화를 만들면 사람들은 대개 "얼마나 빨라졌나"를 묻습니다. 하지만 반복 업무를 프로그램에 넘길 때 진짜 벽은 속도가 아니라 신뢰입니다. 사람이 하던 일을 기계가 대신하면, 그 결과가 맞다는 것을 이제 누가 보증하느냐는 문제가 남습니다. 무역통계 교차분석 프로젝트에서 가장 공을 들인 부분이 바로 이 검증이었습니다. 자동으로 만든 표가 맞다는 것을, 사람의 눈이 아니라 정해진 규칙으로 증명하는 설계를 정리합니다.

왜 검증이 자동화의 본체인가

사람이 손으로 교차표를 만들 때는 만드는 사람이 곧 검산하는 사람이었습니다. 값을 옮기면서 대충 크기가 맞나 눈으로 확인하고 이상하면 다시 봅니다. 그런데 이 과정을 프로그램에 넘기면 그 눈이 사라집니다. 프로그램이 조용히 틀린 값을 내놓아도 아무도 이상함을 못 느끼고 틀린 표가 그대로 보고서가 됩니다. 자동화가 오히려 오류를 발견하기 어렵게 만듭니다.

그래서 검증을 부가 기능이 아니라 파이프라인의 본체로 봤습니다. 교차표를 만드는 코드와 그 표가 맞는지 확인하는 코드를 함께 두고 실행이 끝나면 결과 엑셀에 검증 리포트가 반드시 따라 나오게 했습니다. "이 표를 만들었다"가 아니라 "이 표를 만들었고 이만큼 맞는 것을 확인했다"까지가 하나의 산출물입니다.

참고 엑셀과 셀 단위로 대조한다

첫 번째 검증은 외부 대조입니다. 고객이 예전에 사람 손으로 만들어 둔 참고용 엑셀이 있었습니다. 이것을 정답지로 삼아 자동으로 생성한 값과 참고 엑셀의 값을 셀 하나 단위로 비교합니다. 어떤 시트의 어떤 셀을 무엇과 대조할지를 미리 지정해 두고 그 지점들의 값이 서로 맞는지를 확인합니다.

여기서 중요한 것이 허용 오차입니다. 부동소수점 계산과 반올림 때문에 두 값이 소수점 끝자리에서 미세하게 다를 수 있는데, 이걸 전부 오류로 잡으면 멀쩡한 표가 실패로 뜹니다. 그래서 성격에 따라 오차 기준을 나눴습니다. 백만달러 합계는 1.0, 비중은 0.001, 억달러 환산은 0.01을 허용 범위로 두고 이 범위를 넘는 차이만 진짜 불일치로 봅니다. 값의 종류마다 의미 있는 오차의 크기가 다르기 때문입니다.

스스로 정합성을 확인한다

참고 엑셀 대조만으로는 부족합니다. 참고 엑셀이 없는 표, 새로 늘어난 표는 대조할 정답지가 없습니다. 그래서 두 번째 검증으로 자기 정합성 검사를 붙였습니다. 정답지 없이도 데이터가 스스로 만족해야 하는 규칙을 확인합니다. 대표적으로 전체 합계 행의 값이 세부 항목 행들의 합과 일치하는지를 봅니다. 이 둘이 안 맞으면 참고 엑셀이 없어도 표가 잘못됐다는 것을 알 수 있습니다.

두 검증은 성격이 다릅니다. 외부 대조는 "예전 사람이 만든 정답과 같은가"를 묻고 자기 정합성 검사는 "이 표가 내부적으로 앞뒤가 맞는가"를 묻습니다. 하나는 바깥의 기준, 하나는 안의 규칙입니다. 둘을 함께 돌리면 정답지가 있는 표는 정답지로, 없는 표는 내부 규칙으로 걸러져 검증의 빈틈이 크게 줄어듭니다.

틀린 셀을 그대로 기록한다

검증의 결과를 어떻게 남기느냐도 설계의 일부였습니다. "검증 실패"라는 한마디만 남기면 사람은 어디가 틀렸는지 다시 처음부터 뒤져야 합니다. 그래서 허용 오차를 넘은 셀이 나오면, 어느 시트의 어느 셀이 기대값과 얼마나 다른지를 검증 상세 시트에 그대로 적습니다. 전체적으로는 통과와 실패, 오류 건수를 요약 시트 한 장으로 보여 주고 파고들 사람은 상세 시트에서 문제 지점을 바로 찾아갑니다.

이 기록 방식 덕분에 검증은 "합격/불합격 도장"이 아니라 "무엇을 손봐야 하는가의 안내"가 됩니다. 값이 틀렸을 때 프로그램이 어디가 왜 틀렸는지까지 짚어 주므로, 사람은 전수 검산 대신 지목된 셀만 확인하면 됩니다. 자동화가 신뢰를 얻는 것은 빠르기 때문이 아니라, 이렇게 자기가 한 일을 검증하고 그 근거를 남기기 때문이라고 생각합니다.

이 검증이 확인하는 교차표는 교차분석표 자동 피벗에서, 검증 결과가 담기는 결과 엑셀을 사용자에게 전달하는 방식은 데스크탑 앱 단일 exe 배포에서 다룹니다. 전체 사례는 무역 통계 엑셀 교차분석 자동화에서 볼 수 있습니다.

자주 묻는 질문

허용 오차를 왜 값마다 다르게 두나요?

값의 종류마다 의미 있는 차이의 크기가 다르기 때문입니다. 백만달러 합계에서 1 미만의 차이는 반올림에서 오는 잡음이지만 비중에서는 같은 수치가 큰 오류일 수 있습니다. 그래서 합계, 비중, 억달러 환산에 각각 다른 허용 범위를 두고 그 범위를 넘는 차이만 실제 불일치로 처리합니다.

참고 엑셀이 없는 표는 어떻게 검증하나요?

정답지가 없는 표는 자기 정합성 검사로 확인합니다. 전체 합계가 세부 항목의 합과 맞는지처럼, 데이터가 스스로 만족해야 하는 규칙을 검사하는 방식입니다. 외부 대조와 자기 정합성 검사를 함께 돌려 정답지가 있든 없든 걸러지도록 했습니다.

검증에 실패하면 어디가 틀렸는지 알 수 있나요?

네. 허용 오차를 넘은 셀이 있으면 어느 시트의 어느 셀이 기대값과 얼마나 다른지를 검증 상세 시트에 기록합니다. 전체 통과와 실패 건수는 요약 시트로 보여 주므로, 사람은 전수 검산 대신 지목된 셀만 확인하면 됩니다.

#엑셀자동화#데이터검증#품질보증#무오차

업무자동화 구축이 필요하신가요?

무료 상담 신청