엑셀함정 - 합계식에서 항목 하나가 빠져도 숫자는 나온다

수식을 처음 짤 때는 대개 정확하다. 항목이 여덟 개면 여덟 개를 다 넣는다.

문제는 그다음 달이다. 항목이 하나 늘어난다.

결론

합계 수식은 만든 시점이 아니라 항목이 늘어난 시점에 틀린다.
그래서 수식을 검증하는 게 아니라, 항목 수와 수식을 함께 검증해야 한다.

행을 끼워 넣으면 어떻게 되나

엑셀은 똑똑해서 대부분 알아서 따라온다. 하지만 어디에 끼워 넣느냐에 따라 결과가 갈린다.

범위 안쪽에 삽입 항목 1 새 항목 항목 2 항목 3 소계 범위가 자동으로 넓어진다 범위 끝에 추가 항목 1 항목 2 항목 3 새 항목 소계 범위 밖이라 빠진다 같은 삽입인데 위치 하나로 결과가 갈린다. 사람은 이 차이를 화면에서 구분하지 못한다.

범위 중간에 행을 끼우면 엑셀이 범위를 자동으로 늘려준다. 그런데 마지막 항목과 소계 사이에 행을 추가하면, 엑셀은 그 행을 범위 밖으로 본다. 새로 만든 줄이 소계에 안 들어간다.

화면에서는 둘이 똑같이 생겼다. 새 줄이 목록 안에 얌전히 들어가 있고, 금액도 제대로 적혀 있고, 소계 줄도 바로 아래에 있다. 다른 건 수식 안의 숫자뿐이다.

덧셈으로 짠 수식은 더 위험하다

=SUM(D5:D12) 대신 =D5+D6+D7+D8 처럼 항목을 하나씩 더한 수식이 있다. 항목 성격이 달라 몇 개만 골라 더해야 할 때 이렇게 짠다.

이 수식은 행이 추가돼도 절대 자동으로 늘어나지 않는다. 어디에 끼워 넣든 마찬가지다. 그리고 수식이 길어서 어떤 셀이 빠졌는지 눈으로 세기 어렵다.

실무에서 이런 수식은 대개 예외 처리 때문에 생긴다. 특정 항목만 빼야 해서, 또는 일부만 다른 계산을 해야 해서. 그런데 그 예외를 만든 사람은 나중에 기억하지 못하고, 물려받은 사람은 그게 예외인지 실수인지 모른다.

어떻게 잡아내나

이건 수식을 열어보는 것보다 세는 게 빠르다.

방법 보는 법
건수 카운트소계 옆에 COUNT를 같은 범위로 하나 더 건다. 항목 수와 다르면 누락
범위 블록 선택항목 전체를 드래그해 상태표시줄의 합계와 소계 값을 비교
수식 표시Ctrl + `(백틱)로 소계 줄의 범위 끝 행 번호를 가로로 훑는다
전월 파일과 항목 수 비교항목이 늘어난 달을 찾아 그 달의 수식만 확인

두 번째가 가장 간단하다. 항목 셀을 전부 드래그하면 엑셀 창 아래에 합계가 뜬다. 그 값과 소계 셀의 값이 다르면 뭔가 빠졌거나 더 들어간 것이다. 수식을 열어볼 필요도 없이 3초면 된다.

첫 번째는 상시 장치로 좋다. 소계 옆에 건수를 하나 띄워두면, 항목이 늘어난 달에 그 숫자가 안 따라 오르는 게 눈에 보인다.

구조로 막는 법

체크리스트
  • 항목을 추가할 때는 목록 맨 끝이 아니라 중간에 끼워 넣는다
  • SUM 범위를 항목보다 넉넉히 잡고 아래에 빈 행을 남겨둔다
  • 개별 셀을 더하는 수식은 쓰지 않는다. 예외가 필요하면 구분 열을 만들어 SUMIF로 처리한다
  • 소계 옆에 건수를 함께 표시해 항목 수와 대조한다
  • 항목이 추가된 달에는 반드시 소계 수식을 확인한다

세 번째가 근본 해법이다. 예외를 수식 안에 숨기지 말고 데이터로 드러내는 것이다. 특정 항목을 빼야 한다면 옆에 구분 열을 만들어 표시하고, 소계는 그 구분을 조건으로 계산한다. 그러면 무엇이 왜 빠졌는지가 화면에 보인다.

남는 이야기

이 함정들이 공통으로 말하는 게 하나 있다. 파일은 만들어질 때가 아니라 고쳐질 때 틀린다.

처음 만든 사람은 구조를 다 알고 있으니 실수하지 않는다. 문제는 그다음이다. 항목이 늘고, 담당이 바뀌고, 급한 달에 누군가 한 줄을 끼워 넣는다. 그때마다 처음의 전제가 조금씩 깨진다.

그래서 좋은 결산 파일의 기준은 잘 짜였는가가 아니라 모르는 사람이 고쳐도 안 깨지는가다. 빈 행을 두고, 건수를 띄우고, 예외를 데이터로 드러내는 건 전부 그 목적이다. 파일을 똑똑하게 만드는 게 아니라 튼튼하게 만드는 쪽이다.