호라이즌앱스 로고
← 기술 노트

재고 엑셀에 사용량이 반영 안 될 때, 상태 이름 '정상'의 함정

임균영조회 —

고객이 8월분을 적용했다며 재고 파일을 보내왔습니다. 메시지에는 사용량까지 적용한 파일이라고 적혀 있었습니다.

의료기관 한 곳의 부서별 소모품 재고를 관리하는 엑셀 매크로 파일입니다. 제가 만들어 납품했고 그 무렵은 품목 코드 개편에 맞춰 매핑을 손보던 중이었습니다.

질문은 하나였습니다. 입고 시트에 '수량오류'가 뜬다는 내용이었습니다.

파일을 열자 사용 업로드 시트에 40줄이 '정상'으로 떠 있었습니다. 원장으로 내려가 보니 사용 기록은 8월 14일에서 멈춰 있었습니다.

물어본 건 수량오류

물으신 것부터 답했습니다. 입고를 취소한 3건을 음수로 넣으셨고 입고 업로드는 0 이하 수량을 막습니다.

일부러 그렇게 만든 장치입니다. 오타 하나로 재고가 조용히 깎이는 일을 막으려고 둔 것입니다.

취소분은 '거래처반품' 구분으로 따로 넣으시라고 안내했습니다. 여기까지는 설계대로였습니다.

'정상'은 넣을 준비가 됐다는 뜻

문제는 묻지 않으신 쪽에 있었습니다. 이 파일에서 사용 업로드 줄의 '정상'은 검사를 통과해 넣을 준비가 됐다는 뜻입니다.

반영 버튼을 눌러야 원장에 들어갑니다. 들어간 줄은 상태가 '적용됨'으로 바뀌고 적용 정보 도장이 찍힙니다.

매크로는 '정상'인 줄만 골라 반영합니다. 그러니 40줄은 전부 대기 중이었습니다.

고객 쪽에서 보면 화면에 '정상'이 줄지어 있으니 끝난 일로 읽힙니다.

이 40줄이 하필 제 다음 작업에 걸려 있었습니다. 코드 개편 때문에 정리할 차례였던 매핑 50줄에 정확히 겹쳤습니다.

반영보다 매핑 정리가 먼저였다면 40줄은 짝을 잃고 통째로 미매핑이 됐을 겁니다.

그래서 작업을 멈추고 사용량 반영부터 부탁드렸습니다.

다음 날 온 "반영 완료"

다음 날 파일이 다시 왔습니다. 메시지는 "거래처 반품 완료, 사용량 반영 완료"였습니다.

반품은 안내한 절차대로 들어가 있었습니다. 입고 시트의 음수 줄은 그대로 두고 입출고 입력에서 거래처반품으로 따로 넣으셨습니다.

수량만 틀렸습니다. 2,000이어야 할 반품이 20,000으로 들어가 재고가 18,000개 과다 차감돼 있었습니다.

사용량은 이번에도 0건 반영이었습니다. 이틀 연속 같은 오해가 난 셈입니다.

이 파일 위에서 바로 작업했다면 틀어진 재고 위에 새 매핑을 얹을 뻔했습니다. 반품 수량과 사용 반영을 먼저 바로잡아 달라고 다시 부탁드렸습니다.

고객이 거짓으로 보고한 일은 없습니다. 버튼을 눌렀다고 믿으셨고 그렇게 믿게 만든 이름은 제가 붙였습니다.

만든 사람의 같은 오독

더 아픈 건 그다음에 나왔습니다. 고객이 다시 정리한 파일을 검증하다가 첫날 제가 드린 안내가 틀렸다는 걸 알았습니다.

저는 로션 한 줄의 +40을 "이미 반영돼 있어 40개가 과다"라고 안내했습니다. 그날 파일에서 그 줄은 '정상', 곧 반영 대기였습니다.

고객의 오독을 짚으며 상태 이름이 문제라고 적어 둔 바로 그 함정입니다. 저도 같은 화면을 같은 방식으로 읽었습니다.

고객이 두 줄을 함께 지우면서 결과는 맞아떨어졌지만 운이었습니다. 회신에서 정정했습니다.

그 수정본에서는 사용 반영 93줄이 모두 들어가 있었습니다. 만든 사람까지 헷갈린 이상 고칠 곳은 화면이라고 판단했습니다.

완료 보고를 받으면 여는 곳

이틀을 겪은 뒤로 '완료했다'는 파일을 받으면 보는 순서가 생겼습니다. 보고가 주장하는 상태를 원장에서 직접 읽습니다.

먼저 원장의 마지막 사용일이 보고한 달까지 넘어왔는지 봅니다. 이번처럼 8월 14일에 멈춰 있으면 거기서 끝입니다.

다음은 업로드 시트의 상태별 건수입니다. 대기 상태가 한 줄이라도 남아 있으면 반영은 덜 끝난 것입니다.

원장을 훑을 때는 데이터가 몇 행부터 시작하는지도 확인합니다. 저도 한 번은 4행부터 읽다가 2~3행의 기초재고를 빠뜨려 없는 불일치를 볼 뻔했습니다.

이름을 바꾸고 상태를 하나 더

'정상'을 '반영대기'로 바꿨습니다. 반영 뒤에는 적용 정보 도장이 찍히고 원장의 마지막 사용일이 넘어갑니다.

예전 화면은 대기 중인 줄을 '정상'으로 보여 줬습니다. 지금은 '반영대기'로 보이고 반영 버튼을 눌러야 적용 표시가 붙으며 원장의 마지막 사용일이 넘어갑니다.

같은 시기에 고객은 부서 표기가 없는 오더를 전체 재고에서 빼 달라고 요청했습니다. 원래는 제가 막아 두었던 경우입니다.

조용히 풀어 주면 합계는 맞는데 부서별 재고만 틀어집니다. 그러면 아무도 알아채지 못합니다.

고칠 방법을 놓고 비교한 내용은 이렇습니다.

방법결과
계속 막기규칙을 켜지 않으면 9월분 396개를 올릴 방법이 없음
조용히 풀기합계는 맞고 부서재고만 틀어져 아무도 모름
통과시키되 표시'창고차감'으로 따로 보이고 스위치로 끌 수 있음

이 비교는 검토 관점 다섯 개를 따로 돌려 보고 정했습니다. 다섯 관점 모두 조용히 풀면 아무도 모른다는 쪽으로 모였습니다.

규칙을 바꾸면 그동안 드린 안내와 달라져 헷갈리지 않겠냐는 걱정도 있었습니다. 따져 보니 혼란을 만든 건 규칙보다 '정상'이라는 이름 쪽이었습니다.

그래서 통과는 시키되 따로 보이게 했습니다. 새 상태 '창고차감'을 주황으로 두고 반영 뒤에도 따로 집계되게 했으며 켜고 끄는 설정 스위치를 넣었습니다.

상태화면이 말하는 것
반영대기 (옛 '정상')검사는 통과했고 아직 원장에 없음
적용됨원장에 들어갔고 적용 정보 도장이 있음
창고차감 (신규, 주황)부서 표기가 없어 창고에서 빼고 따로 집계

고친 화면에서 나온 판정 순서 오류

새 상태를 넣고 9월 실제 오더로 돌려 보니 결함이 하나 더 나왔습니다. 반영이 끝난 창고차감 줄이 여전히 주황으로 남아 있었습니다.

판정식이 '창고차감인가'를 '적용 정보가 찍혔나'보다 먼저 보고 있었습니다. '정상' 오해와 같은 종류의 혼란을 제 손으로 다시 만들 뻔했습니다.

납품 직전 점검에서는 같은 뿌리의 다른 갈래도 나왔습니다. 스위치를 '차단'으로 돌리면 이미 반영된 줄이 '부서 미확정'으로 보였습니다.

그래서 판정 순서를 고정했습니다. 납품본은 어떤 분기보다 "이미 반영됐나"를 먼저 봅니다.

납품 전에는 원본에서 결과물을 다시 만들고 점검을 처음부터 다시 돌려 전부 통과했습니다. 9월 실제 오더로 돌려 보니 44건 중 43건이 처리됐습니다.

상태 이름부터 다시 볼 파일

부서가 여럿이고 매달 사용량을 붙여 넣는 재고 파일이라면 상태 열이 사실상 화면의 전부입니다. 담당자는 그 열만 보고 끝났는지 판단합니다.

이전 감수에서는 [입력 지우기] 버튼이 미반영 줄과 적용 정보 도장을 말없이 지우는 것도 잡은 적이 있습니다. 그대로 두면 그달 사용분이 사라지고 다시 붙여 넣을 때 이중으로 차감됩니다.

지금 쓰는 파일의 상태 이름이 애매하다면 상태 정의와 판정 순서부터 함께 보는 편이 빠릅니다. 재고 파일 점검 상담에서 파일 사본을 기준으로 이야기할 수 있습니다.

매크로를 직접 고쳐 쓰실 생각이라면 AI에게 VBA를 맡기는 엑셀 자동화 강의에서 요청문 틀과 오류가 났을 때 되묻는 순서를 먼저 익혀 두셔도 좋습니다.

상태 표시 체크리스트

재고 파일을 새로 만들거나 맡길 때 아래를 하나씩 확인해 보세요.

  • 대기·완료·오류가 이름만 보고 구분되는지 확인하세요. '정상'이나 'OK'처럼 완료로도 읽히는 말은 대기 상태에 쓰지 않는 편이 안전합니다.
  • 반영된 줄에 도장(적용 정보)이 찍히는지 살피세요. 도장이 없는 줄은 아직 원장에 없는 줄로 보시면 됩니다.
  • 지우기나 초기화 버튼이 미반영 줄과 도장까지 함께 지우는지 사본에서 눌러 보세요.
  • 수량이 평소의 10배쯤 되면 경고가 뜨게 해 두세요. 2,000이 20,000으로 들어간 반품은 형식 검사만으로는 걸리지 않습니다.
  • 반영된 줄의 상태가 다른 판정에 덮이지 않는지 점검하세요. 판정식이 "이미 반영됐나"를 가장 먼저 봐야 합니다.
  • '완료했다'는 보고를 받으면 원장을 열어 마지막 반영일과 수량 합을 보고 내용과 직접 대조하세요. 다음 작업이 그 상태를 전제로 한다면 더 그렇습니다.
  • 수량 합은 부서 칸마다 따로 확인하세요. 칸끼리 어긋난 값은 총계에서 서로 지워져 보이지 않을 수 있습니다.

이어서 읽기