본문으로 건너뛰기
엑셀·구글시트 자동화 실험

엑셀·구글시트 자동화 실험No. 366

수식 오류 값 원인 찾기가 막힐 때 먼저 확인할 셀

수식과 오류 표시가 보이는 모니터

오류가 시작된 셀을 좁힙니다

하려는 일은 계산이 멈춘 이유를 입력값, 참조 관계, 함수 조건으로 나누어 확인하는 것입니다. 엑셀과 구글시트에서는 같은 수식도 셀에 실제로 저장된 값에 따라 결과가 달라집니다. 화면에 숫자가 보인다는 이유만으로 계산 가능한 숫자라고 판단하지 않습니다.

예를 들어 A2를 B2로 나누는 계산이라면 A2의 자료형과 B2의 값을 먼저 살펴봅니다. B2가 0이거나 빈칸이면 나눗셈에서 오류가 발생할 수 있습니다. A2에 숫자처럼 보이는 글자가 들어 있다면 계산 과정에서 값 오류가 생길 수 있습니다. 빈칸처럼 보이지만 공백이 들어 있는 셀도 구분합니다.

진단용 수식은 원래 계산식과 떨어진 빈 셀에 적습니다. 원본을 덮어쓰면 입력 상태와 오류 발생 지점을 비교하기 어려워집니다. 여러 셀에 문제가 있어도 우선 오류가 있는 셀 하나를 골라 수식과 참조값을 확인합니다. 그다음 같은 구조의 다른 셀로 확인 범위를 넓힙니다.

  1. 오류가 나타난 셀의 수식 확인
  2. 참조한 셀의 실제 값과 자료형 확인
  3. 계산식을 작은 부분으로 나누어 확인
  4. 원인 수정 후 결과와 예외 조건 확인
계산식 자료가 꽂힌 나란한 파일 꽂이

하나씩 확인

오류 셀 점검

  • 오류 셀의 수식 확인
  • 참조값과 자료형 확인
  • 계산을 작은 부분으로 나누기
  • 수정 후 결과와 예외 확인

확인할 때는 셀을 선택하고 수식 입력줄의 내용도 읽습니다. 셀 너비 때문에 값이 잘려 보이거나 표시 형식 때문에 소수 부분이 드러나지 않을 수 있습니다. 겉으로 같은 값이어도 저장된 값이 다를 수 있으므로 화면 모양과 실제 내용을 나누어 확인합니다.

오류를 감추기 전에 참조값과 계산 조건을 나누어 확인합니다

진단용 수식을 그대로 넣습니다

다음 예시는 C2에 =A2/B2가 들어 있는 구성을 전제로 합니다. D2부터 H2까지 비어 있다면 각 셀에 아래 수식을 넣어 상태를 나누어 확인합니다. 진단 결과를 원래 계산 결과와 구분할 수 있도록 각 열의 첫 셀에 용도를 적어 두면 읽기 편합니다.

C2의 계산식입니다

=A2/B2

D2에서 오류 종류를 확인합니다

=IF(ISERROR(C2),ERROR.TYPE(C2),0)

E2에서 A2가 숫자인지 확인합니다

=ISNUMBER(A2)

F2에서 B2가 숫자인지 확인합니다

=ISNUMBER(B2)

G2에서 A2가 텍스트인지 확인합니다

=ISTEXT(A2)

H2에서 A2의 문자 수를 확인합니다

=LEN(A2)

D2의 결과가 0이면 이 진단식에서는 C2가 오류 상태가 아니라는 뜻입니다. C2의 계산 결과가 0이라는 뜻은 아닙니다. ERROR.TYPE은 정상 값에 적용해도 오류가 나므로 ISERROR로 먼저 분기합니다. 이 순서가 빠지면 진단식 자체의 오류를 원래 계산의 문제로 오해하기 쉽습니다.

함수 이름과 쉼표를 그대로 붙였는데 수식 구문 오류가 나타나면 문서의 지역 설정과 인수 구분자를 확인합니다. 환경에 따라 쉼표 대신 세미콜론을 사용하는 경우가 있습니다. 구문을 읽지 못하는 상태에서는 입력값을 바꿔도 해결되지 않으므로 수식이 정상적으로 해석되는지부터 확인합니다.

계산기 표시창을 가까이 본 모습

이렇게

구문부터 코드까지

  1. 지역 설정과 구분자 확인
  2. 수식 해석 후 오류 코드 확인
  3. 코드만으로 원인 확정 금지

결과를 한 줄씩 읽습니다

D2는 오류를 숫자 코드로 나누어 보여 줍니다. 이 예시에서 코드 2는 0으로 나누는 계산, 코드 3은 값의 종류가 맞지 않는 계산을 의심할 단서입니다. 코드 4는 유효하지 않은 참조, 코드 7은 찾는 값을 얻지 못한 상태를 확인할 단서입니다. 코드만 보고 수정 대상을 확정하지는 않습니다.

E2와 F2는 각각 A2와 B2가 숫자인지 검사합니다. TRUE는 숫자라는 뜻이고 FALSE는 숫자가 아니라는 뜻입니다. 다만 숫자라는 사실만으로 계산 조건까지 충족하는 것은 아닙니다. B2가 숫자 0이면 F2는 TRUE이지만 나눗셈은 여전히 오류가 납니다. 자료형 검사와 값의 조건 검사를 함께 읽어야 합니다.

G2는 A2가 텍스트인지 확인합니다. 숫자 12와 글자로 저장된 12는 화면에서 비슷하게 보일 수 있습니다. 셀 표시 형식을 숫자로 바꾸는 것만으로 기존 텍스트가 실제 숫자로 변환되는 것은 아닙니다. 가져온 자료라면 앞뒤 공백이나 작은따옴표, 단위 문자가 섞였는지도 살펴봅니다.

H2는 A2의 문자 수를 확인하는 보조 수식입니다. 아무것도 없는 셀은 0으로 나오지만 공백 하나가 들어 있으면 1로 나옵니다. 수식이 빈 문자열을 반환하는 셀도 0으로 나올 수 있으므로 문자 수만으로 완전히 비어 있는 셀이라고 판단하지 않습니다. 수식 입력줄과 함께 확인하는 이유입니다.

앞뒤로 놓인 상품 코드 부착 상자

짚고 가기

상황별 점검 기준

  • 문자 수는 수식 입력줄과 확인
  • 분모 0은 계산 조건 확인
  • 글자 숫자는 자료형 확인

상황을 비교하면 점검 순서가 분명해집니다. 분모가 0인 경우는 계산 조건을, 숫자가 글자로 들어온 경우는 자료형을 먼저 확인합니다. 열을 삭제한 뒤 오류가 생긴 경우는 참조 관계를 살펴봅니다. 조회 함수에서 원하는 항목이 나오지 않는 경우에는 검색값과 검색 범위가 같은 기준을 쓰는지 확인합니다.

조회값을 비교할 때는 눈에 보이는 글자만 맞추지 않습니다. 양쪽 값의 자료형과 앞뒤 공백을 함께 확인합니다. 상품 코드처럼 앞자리 0이 의미를 갖는 값은 숫자로 바꾸면 구분 정보가 사라질 수 있습니다. 계산에 쓰는 수량과 식별에 쓰는 코드는 서로 다른 기준으로 다룹니다.

오류 코드가 같아도 발생한 수식과 입력값에 따라 수정 방법이 달라집니다

응용할 범위와 멈출 지점을 정합니다

수식이 길다면 안쪽 함수부터 별도 셀로 꺼내 계산합니다. 조회 결과를 곱셈에 사용하는 구조라면 조회 함수가 원하는 값을 반환하는지 먼저 확인합니다. 조회가 정상일 때만 뒤의 계산을 이어서 점검합니다. 중간 결과가 있어야 입력 문제인지 계산 조건 문제인지 구분하기 쉽습니다.

확인용 셀을 만들 때는 원래 수식의 괄호와 참조 범위를 함께 옮깁니다. 일부만 복사하면서 상대 참조가 이동하면 새로운 문제가 생길 수 있습니다. 복사 전후 수식을 읽고 의도한 셀을 가리키는지 확인합니다. 결과가 달라졌다는 사실만으로 원인을 찾았다고 판단하지 않습니다.

분모가 숫자이며 0이 아닐 때만 계산하려면 다음과 같이 조건을 적을 수 있습니다. 이 예시는 A2도 숫자여야 계산하도록 구성한 것입니다. 조건을 충족하지 않으면 계산 결과 대신 확인 문구를 반환합니다.

위에서 내려다본 수식 출력물

주의할 점

나눗셈 전 조건 확인

  • A2와 B2가 숫자인지 확인
  • B2가 0이 아닌지 확인
  • 조건 미충족 시 확인 문구

=IF(AND(ISNUMBER(A2),ISNUMBER(B2),B2<>0),A2/B2,"입력 확인")

이 수식도 참조한 셀 자체의 오류를 모두 처리하는 용도는 아닙니다. A2나 B2가 다른 수식의 오류를 전달받는 상태라면 그 앞의 계산을 추적해야 합니다. 조건식이 길어질수록 문제를 한 셀에 몰아넣기보다 입력 검사와 최종 계산을 나누는 편이 수정하기 수월합니다.

IFERROR는 오류가 났을 때 대신 보여 줄 값을 정하는 함수입니다. =IFERROR(A2/B2,"")처럼 쓰면 오류 대신 빈 문자열을 반환합니다. 다만 분모가 0인 상황과 입력값이 잘못된 상황이 모두 빈칸으로 보입니다. 계산하지 못한 값을 정상적인 빈칸과 구분해야 하는 문서에서는 확인 문구를 쓰는 편이 적절합니다.

오류 대신 숫자 0을 넣는 처리도 용도를 따져야 합니다. 실제 계산 결과가 0인 경우와 계산하지 못한 경우가 섞이면 합계나 평균을 해석하기 어려워질 수 있습니다. 결과를 사용하는 사람이 두 상태를 구분할 필요가 있는지 확인하고 대체값을 정합니다.

수정 후에는 정상 입력과 문제가 있었던 입력을 각각 다시 확인합니다. 빈칸, 0, 텍스트를 넣었을 때 문서에서 정한 처리 방식과 맞는지도 살펴봅니다. 엑셀·구글시트 자동화 실험에서는 이런 점검 기준을 수식 옆에 남기는 방식으로 계산의 의도를 정리합니다. 다음 수정에서도 같은 기준을 읽을 수 있어야 원인을 다시 찾기 수월합니다.

목록으로

이 글은 엑셀·구글시트 자동화 실험에서 발행했습니다. 인용·링크는 자유롭고, 본문·그림의 복제 게시는 삼가 주세요.