아빠노트

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

실측 2026-09-18처음 쓴 날 2026-09-18 · English version

목표(B열)와 실적(C열)을 =IF(C2>=B2,"달성","미달") 로 비교하면, 실적을 안 낸 사람이 목표에 따라 「미달」도 되고 「달성」도 됩니다. 실적칸에 숫자 대신 글자가 들어 있으면 그 사람은 무조건 「달성」입니다.

한 줄로

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

이런 분께

  • 월말에 목표 대비 실적표를 만들어 「달성/미달」을 붙이는 분
  • 달성 건수를 세어 보고했는데 숫자가 팀장이 센 것과 다르다는 말을 들은 분
  • 실적을 아직 안 낸 사람과 0으로 낸 사람을 갈라 놓아야 하는 분

실측 환경

항목값
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열)을 놓고, 실적칸에 여섯 가지 상태를 만들었습니다.

  • 목표보다 작은 값(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>=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,"달성","미달")

기본식(D, >=)에서 5건이던 달성이 K식(>)에서는 2건으로 줄었습니다. 나래(100=100)·사랑(0 목표에 빈칸 제출)·아람(0 목표에 0 제출) 세 명이 미달로 넘어갔고, 남은 달성은 다온(120)과 바다(글자)뿐입니다.

예외를 걸러 낸 IFS식(F, 달성 3건)에 같은 부호 변경을 적용한 식은 이번 시험에서 엑셀로 돌려 보지 않았습니다. 아래는 위 실행 기록의 값으로 계산한 결과입니다.

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

라온·사랑·바다는 C2="" 나 NOT(ISNUMBER(C2)) 조건에서 부호와 상관없이 먼저 걸러지므로, 목표 이상 비교까지 가는 사람은 나래·다온·아람 세 명뿐입니다. 그중 나래와 아람이 미달로 넘어가면서, F식에서 3건이던 달성이 M식에서는 1건(다온)으로 줄어드는 계산입니다. 같은 「부호를 > 로 바꾼다」는 조작인데도 어느 수식에 적용하느냐에 따라 5→2, 3→1로 줄어드는 폭이 다릅니다. 사내 기준이 「이상」인지 「초과」인지에 따라 건수가 이만큼 움직이므로, 부호를 고르기 전에 그것부터 정하셔야 합니다.

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가 어떻게 답하는지는 넣어 보지 않았습니다.
  • 조건부 서식으로 색을 칠했을 때의 건수는 확인하지 않았습니다.

함께 보기

2026-09-28 수정: >= 를 > 로 바꿨을 때 달성 건수가 「3건에서 2건」이라고 적은 것을 바로잡았습니다. 기본식(D)은 5건에서 2건, 예외를 거른 IFS식(F)은 3건에서 1건으로 줄어듭니다.