AI 해결 노트 · 2026-09-18 · 실측 2026-09-18

엑셀 IF 함수가 기준값·빈칸·0에서 갈리는 자리 — 달성 건수를 세 번 세어 봤습니다

한 줄로

목표(B열)와 실적(C열)을 =IF(C2>=B2,"달성","미달") 로 비교하면, 실적을 안 낸 사람이 목표에 따라 「미달」도 되고 「달성」도 됩니다. 실적칸에 숫자 대신 글자가 들어 있으면 그 사람은 무조건 「달성」입니다. 같은 더미 표 9행을 수식 세 가지로 세어 봤더니 달성이 5건·4건·3건으로 갈렸고, 사람이 보고 센 정답은 3건이었습니다.

이런 분께

실측 환경

항목
OSWindows 11 Home (10.0.26200)
Excel16.0 (빌드 20326)
조작 방법Excel COM (Excel.Application, Visible=false) — 사람이 메뉴로 넣는 것과 같은 수식을 셀에 넣고 값을 읽음
시험 파일직접 만든 더미 E2_24_목표실적.xlsx (9행)
로그원자료\excel-if-boundaries\01_if_실행로그.txt, 02_png_렌더로그.txt, 03_보탬시험.txt

더미 표에 일부러 섞어 넣은 것

목표(B열)와 실적(C열)을 놓고, 실적칸에 여섯 가지 상태를 만들었습니다.

여기에 목표가 0인 행(사랑·아람)과 소수점이 붙은 행(99.5)을 더했습니다. 정답은 수식을 넣기 전에 I열(「실제 상황(사람이 아는 정답)」)에 적어 두고 로그에 남겼습니다. 사람 눈으로 달성인 사람은 나래(100=100)·다온(120)·아람(0 목표에 0 제출) 세 명입니다.

수식 세 가지를 나란히 넣었습니다

D2: =IF(C2>=B2,"달성","미달")
E2: =IF(C2="","",IF(C2>=B2,"달성","미달"))
F2: =IFS(C2="","미입력",NOT(ISNUMBER(C2)),"숫자아님",C2>=B2,"달성",TRUE,"미달")

무슨 일이 벌어지는지 보려고 두 칸을 더 뒀습니다.

G2: =ISNUMBER(C2)
H2: =C2>=B2

H열은 IF가 실제로 보는 참·거짓 그 자체입니다. IF가 왜 그렇게 답했는지는 여기를 보면 알 수 있습니다.

목표·실적 9행에 수식 세 가지를 나란히 넣은 결과. 빈칸·0·글자 행에서 답이 갈린다
목표·실적 9행에 수식 세 가지를 나란히 넣은 결과. 빈칸·0·글자 행에서 답이 갈린다

셀마다 갈린 자리

담당자목표실적기본식 D빈칸처리식 EIFS식 FISNUMBERC2>=B2실제 상황
김가온10080미달미달미달TRUEFALSE미달
나래100100달성달성달성TRUETRUE경계 — 같으면 달성
다온100120달성달성달성TRUETRUE달성
라온100(빈칸)미달(빈칸)미입력FALSEFALSE아직 안 냄
마루1000미달미달미달TRUEFALSE0으로 냄 = 미달
바다100미제출달성달성숫자아님FALSETRUE숫자칸에 글자
사랑0(빈칸)달성(빈칸)미입력FALSETRUE아직 안 냄
아람00달성달성달성TRUETRUE달성
자람10099.5미달미달미달TRUEFALSE미달

문제가 되는 곳은 세 줄입니다.

라온과 사랑 — 빈칸은 0으로 읽힙니다. 두 사람 다 실적을 안 냈는데 기본식은 라온에게 「미달」을, 사랑에게 「달성」을 줬습니다. 목표 100인 라온은 C>=B 가 FALSE, 목표 0인 사랑은 TRUE였습니다. 빈 칸을 0으로 놓고 비교했다고 보면 두 결과가 다 설명됩니다. 목표가 100이면 0>=100 이라 미달, 목표가 0이면 0>=0 이라 달성입니다. 아직 아무것도 안 낸 사람이 목표 0짜리 항목에서 달성 도장을 받는 셈입니다.

바다 — 글자는 숫자보다 크게 읽힙니다. 실적칸에 「미제출」이라고 적었더니 C2>=B2 가 TRUE로 나왔고 기본식은 「달성」이라고 답했습니다. 다른 글자도 마찬가지인지 목표 100을 두고 여덟 가지를 따로 넣어 봤습니다(시트를 새로 만들어 목표를 A열, 실적을 B열에 뒀습니다).

실적칸에 넣은 글자=IF(B2>=A2,"달성","미달")B2>=A2ISNUMBER
미제출달성TRUEFALSE
휴직달성TRUEFALSE
-달성TRUEFALSE
공백 한 칸달성TRUEFALSE
0 (텍스트 서식으로 넣음)달성TRUEFALSE
없음달성TRUEFALSE
N/A달성TRUEFALSE
달성TRUEFALSE

여덟 가지 전부 달성이었습니다. 글자가 무엇이냐와 상관없이 숫자와 비교하면 글자 쪽이 큽니다. 제일 위험한 줄은 다섯째입니다. 셀 서식이 「텍스트」로 되어 있는 칸에 0을 치면 화면에는 0이 보이는데 IF는 달성이라고 답합니다.

빈칸 처리식(E)은 라온과 사랑은 걸러 내지만 바다는 못 걸러 냅니다. C2="" 는 빈칸만 잡지, 글자가 든 칸은 잡지 않습니다.

세어 본 결과

수식별 달성 건수와 합계·평균 집계
수식별 달성 건수와 합계·평균 집계
센 것쓴 수식
기본식이 센 「달성」5=COUNTIF(D2:D10,"달성")
빈칸처리식이 센 「달성」4=COUNTIF(E2:E10,"달성")
IFS식이 센 「달성」3=COUNTIF(F2:F10,"달성")
빈칸처리식이 비워 둔 칸2=COUNTBLANK(E2:E10)
실적 입력 건수6=COUNT(C2:C10)
실적 합계399.5=SUM(C2:C10)
실적 평균66.5833…=AVERAGE(C2:C10)
전체 행 수9=COUNTA(A2:A10)

사람이 보고 센 정답은 3건입니다. 기본식은 두 건을 더 세었고(사랑·바다), 빈칸 처리식은 한 건을 더 세었습니다(바다). 9행짜리 표에서 두 건이면 22%가 틀린 것입니다.

평균에도 같은 함정이 걸려 있습니다. 행은 9개인데 COUNT가 센 실적은 6개뿐이라, AVERAGE는 399.5를 9가 아닌 6으로 나눠 66.58을 내놓습니다. 빈칸과 글자를 빼고 센 값입니다. 「평균 실적」을 보고할 때 분모가 몇인지는 따로 확인하셔야 합니다.

경계와 IFS

>= 는 같은 값을 달성 쪽에 넣습니다. 나래의 100=100이 「달성」으로 나온 이유입니다. 부호만 > 로 바꿔 K열에 한 줄 더 넣고 세어 봤습니다.

K2: =IF(C2>B2,"달성","미달")

달성이 3건에서 2건으로 줄었습니다. 나래(100=100)와 아람(0 목표에 0 제출)이 미달로 넘어갔고, 남은 달성은 다온(120)과 바다(글자)입니다. 사내 기준이 「이상」인지 「초과」인지에 따라 건수가 이만큼 움직이므로, 부호를 고르기 전에 그것부터 정하셔야 합니다.

IFS는 조건을 위에서부터 보고 처음 맞는 조건의 답을 돌려줍니다. 순서가 결과를 바꾸는지 보려고 목표 이상 조건을 맨 앞으로 옮겨 봤습니다.

L2: =IFS(C2>=B2,"달성",C2="","미입력",NOT(ISNUMBER(C2)),"숫자아님",TRUE,"미달")

달성이 3건에서 5건으로 늘었습니다. 바다(글자)와 사랑(빈칸에 목표 0)이 첫 조건에서 걸려 「달성」을 받아 버렸고, 뒤에 있는 미입력·숫자아님 조건까지 가지 못했습니다. 기본식과 똑같은 5건입니다. 예외를 앞쪽에 두지 않으면 IFS를 쓴 보람이 없어집니다.

실무에서 쓸 만한 모양

=IFS(C2="","미입력",NOT(ISNUMBER(C2)),"숫자아님",C2>=B2,"달성",TRUE,"미달")

IFS가 없는 버전이라면 IF를 겹쳐 씁니다. 같은 9행에 나란히 넣어 비교해 보니 아홉 행 모두 IFS와 같은 답이 나왔습니다.

=IF(C2="","미입력",IF(NOT(ISNUMBER(C2)),"숫자아님",IF(C2>=B2,"달성","미달")))

건수를 셀 때는 달성·미달만 세지 말고 걸러 낸 쪽도 같이 세어 보고에 붙이십시오.

=COUNTIF(F2:F10,"미입력")     → 2
=COUNTIF(F2:F10,"숫자아님")   → 1
=COUNTIF(F2:F10,"미달")       → 3

달성 3 + 미달 3 + 미입력 2 + 숫자아님 1 = 9로, 전체 행 수와 맞습니다. 네 숫자를 더해서 행 수가 나오지 않으면 어딘가 빠뜨린 것입니다.

실패한 것

확인하지 않은 것

함께 보기