AI 해결 노트 · 2026-09-18 · 실측 2026-09-18
엑셀 IF 함수가 기준값·빈칸·0에서 갈리는 자리 — 달성 건수를 세 번 세어 봤습니다
한 줄로
목표(B열)와 실적(C열)을 =IF(C2>=B2,"달성","미달") 로 비교하면, 실적을 안 낸 사람이 목표에 따라 「미달」도 되고 「달성」도 됩니다. 실적칸에 숫자 대신 글자가 들어 있으면 그 사람은 무조건 「달성」입니다. 같은 더미 표 9행을 수식 세 가지로 세어 봤더니 달성이 5건·4건·3건으로 갈렸고, 사람이 보고 센 정답은 3건이었습니다.
이런 분께
- 월말에 목표 대비 실적표를 만들어 「달성/미달」을 붙이는 분
- 달성 건수를 세어 보고했는데 숫자가 팀장이 센 것과 다르다는 말을 들은 분
- 실적을 아직 안 낸 사람과 0으로 낸 사람을 갈라 놓아야 하는 분
실측 환경
| 항목 | 값 |
|---|---|
| OS | Windows 11 Home (10.0.26200) |
| Excel | 16.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열)을 놓고, 실적칸에 여섯 가지 상태를 만들었습니다.
- 목표보다 작은 값(80), 목표와 같은 값(100), 목표보다 큰 값(120)
- 빈칸 — 아직 안 낸 사람
- 숫자 0 — 실적이 없다고 0을 적어 낸 사람
- 글자 「미제출」 — 숫자칸에 말을 적은 사람
여기에 목표가 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>=B2H열은 IF가 실제로 보는 참·거짓 그 자체입니다. IF가 왜 그렇게 답했는지는 여기를 보면 알 수 있습니다.

셀마다 갈린 자리
| 담당자 | 목표 | 실적 | 기본식 D | 빈칸처리식 E | IFS식 F | ISNUMBER | C2>=B2 | 실제 상황 |
|---|---|---|---|---|---|---|---|---|
| 김가온 | 100 | 80 | 미달 | 미달 | 미달 | TRUE | FALSE | 미달 |
| 나래 | 100 | 100 | 달성 | 달성 | 달성 | TRUE | TRUE | 경계 — 같으면 달성 |
| 다온 | 100 | 120 | 달성 | 달성 | 달성 | TRUE | TRUE | 달성 |
| 라온 | 100 | (빈칸) | 미달 | (빈칸) | 미입력 | FALSE | FALSE | 아직 안 냄 |
| 마루 | 100 | 0 | 미달 | 미달 | 미달 | TRUE | FALSE | 0으로 냄 = 미달 |
| 바다 | 100 | 미제출 | 달성 | 달성 | 숫자아님 | FALSE | TRUE | 숫자칸에 글자 |
| 사랑 | 0 | (빈칸) | 달성 | (빈칸) | 미입력 | FALSE | TRUE | 아직 안 냄 |
| 아람 | 0 | 0 | 달성 | 달성 | 달성 | TRUE | TRUE | 달성 |
| 자람 | 100 | 99.5 | 미달 | 미달 | 미달 | TRUE | FALSE | 미달 |
문제가 되는 곳은 세 줄입니다.
라온과 사랑 — 빈칸은 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>=A2 | ISNUMBER |
|---|---|---|---|
| 미제출 | 달성 | TRUE | FALSE |
| 휴직 | 달성 | TRUE | FALSE |
- | 달성 | TRUE | FALSE |
| 공백 한 칸 | 달성 | TRUE | FALSE |
0 (텍스트 서식으로 넣음) | 달성 | TRUE | FALSE |
| 없음 | 달성 | TRUE | FALSE |
| N/A | 달성 | TRUE | FALSE |
| 가 | 달성 | TRUE | FALSE |
여덟 가지 전부 달성이었습니다. 글자가 무엇이냐와 상관없이 숫자와 비교하면 글자 쪽이 큽니다. 제일 위험한 줄은 다섯째입니다. 셀 서식이 「텍스트」로 되어 있는 칸에 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로, 전체 행 수와 맞습니다. 네 숫자를 더해서 행 수가 나오지 않으면 어딘가 빠뜨린 것입니다.
실패한 것
- 초안을 쓴 뒤 GPT에 사실 대조를 돌렸더니 첫 문단의 수식이
=IF(B2>=A2,…)로 적혀 있었습니다. 실제로 돌린 것은 목표가 B열, 실적이 C열인=IF(C2>=B2,…)입니다. 열 이름을 거꾸로 쓴 것이라 고쳤습니다. - 같은 대조에서 「휴직이나
-한 글자만 적혀 있어도 달성으로 집계된다」, 「>를 쓰면 나래가 미달이 된다」, 「IFS 순서를 바꾸면 예외가 먼저 걸린다」 세 문장이 돌려 보지 않은 추측으로 잡혔습니다. 여덟 가지 글자·>수식·순서를 바꾼 IFS를 실제로 돌려서 숫자를 채웠고, 세 문장 모두 결과와 맞았습니다. - 첫 번째 시험에서 글자 사례를 「미제출」 하나만 넣은 것이 화근이었습니다. 처음부터 여러 개를 넣었으면 한 번에 끝났습니다.
확인하지 않은 것
- Excel 16.0 빌드 20326 한 가지에서만 돌렸습니다. 2016·2019나 웹용 엑셀, 구글 시트에서는 확인하지 않았습니다.
- 빈 셀과 글자의 비교 순서가 엑셀 문서에 어떻게 적혀 있는지는 찾아보지 않았고, 이 글의 설명은 위 9행과 글자 여덟 가지에서 관측한 결과에 대한 해석입니다.
- 피벗 테이블이나 부분합으로 셀 때도 같은 숫자가 나오는지는 세어 보지 않았습니다.
- 셀에 오류값(
#N/A,#DIV/0!)이 들어 있을 때 IF가 어떻게 답하는지는 넣어 보지 않았습니다. - 조건부 서식으로 색을 칠했을 때의 건수는 확인하지 않았습니다.