DaddyNote

UK, Irish and EU money and travel rules, worked through step by step, with the date each figure was checked.

AI how-to notes · 2026-09-18 · last run 2026-09-18 · 한국어 원문

Where Excel IF splits on the threshold, blanks and zero — counting the same 9 rows three ways

One line summary

Compare target (column B) against actual (column C) with =IF(C2>=B2,"달성","미달") — met versus missed — and somebody who filed nothing comes out as 「미달」 or 「달성」 depending on their target. Put text instead of a number in the actual cell and that person is 「달성」 no matter what. Counting the same 9-row dummy table with three formulas gave 5, 4 and 3, and the answer a human arrives at by eye is 3.

Throughout this note the formula outputs are Korean literals: 달성 = met, 미달 = missed, 미입력 = not entered, 숫자아님 = not a number.

Who this is for

Test environment

ItemValue
OSWindows 11 Home (10.0.26200)
Excel16.0 (build 20326)
MethodExcel COM (Excel.Application, Visible=false) — the same formulas a person would type through the UI, written into cells and read back
Test fileA dummy we built ourselves, E2_24_목표실적.xlsx (9 rows)
Logs원자료\excel-if-boundaries\01_if_실행로그.txt, 02_png_렌더로그.txt, 03_보탬시험.txt

What we deliberately mixed into the dummy table

With target in column B and actual in column C, we created six states in the actual cell.

On top of that we added rows with a target of 0 (사랑, 아람) and a row with a decimal (99.5). The answer was written into column I (「실제 상황(사람이 아는 정답)」 — the real situation, as a human knows it) before any formula went in, and recorded in the log. The people a human eye counts as met are three: 나래 (100=100), 다온 (120), and 아람 (0 filed against a target of 0).

Three formulas side by side

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

To see what is actually going on, we added two more cells.

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

Column H is the true/false IF itself is looking at. If you want to know why IF answered the way it did, that is where to look.

Three formulas placed side by side against 9 rows of target and actual. The answers diverge on the blank, zero and text rows
Three formulas placed side by side against 9 rows of target and actual. The answers diverge on the blank, zero and text rows

Where the cells diverge

OwnerTargetActualBasic DBlank-aware EIFS FISNUMBERC2>=B2Real situation
김가온10080미달미달미달TRUEFALSEmissed
나래100100달성달성달성TRUETRUEboundary — equal counts as met
다온100120달성달성달성TRUETRUEmet
라온100(blank)미달(blank)미입력FALSEFALSEhasn't filed
마루1000미달미달미달TRUEFALSEfiled a zero = missed
바다100미제출달성달성숫자아님FALSETRUEwords in a number cell
사랑0(blank)달성(blank)미입력FALSETRUEhasn't filed
아람00달성달성달성TRUETRUEmet
자람10099.5미달미달미달TRUEFALSEmissed

Three rows are the trouble.

라온 and 사랑 — a blank reads as zero. Neither of them filed anything, yet the basic formula handed 라온 「미달」 and 사랑 「달성」. For 라온, target 100, C>=B was FALSE; for 사랑, target 0, it was TRUE. Both results are explained if the blank is compared as a 0. Target 100 means 0>=100, missed; target 0 means 0>=0, met. Which is to say somebody who has submitted nothing at all gets a met stamp on any item whose target is zero.

바다 — text reads as larger than any number. With 「미제출」 written in the actual cell, C2>=B2 came out TRUE and the basic formula answered 「달성」. To see whether other text behaves the same, we tested eight variants against a target of 100 on a fresh sheet (target in column A, actual in column B).

Text put in the actual cell=IF(B2>=A2,"달성","미달")B2>=A2ISNUMBER
미제출달성TRUEFALSE
휴직달성TRUEFALSE
-달성TRUEFALSE
a single space달성TRUEFALSE
0 (entered under text format)달성TRUEFALSE
없음달성TRUEFALSE
N/A달성TRUEFALSE
가달성TRUEFALSE

All eight came out met. Whatever the text is, compared against a number the text side is larger. The most dangerous line is the fifth. Type a 0 into a cell whose format is 「텍스트」 (Text) and the screen shows 0 while IF answers met.

The blank-aware formula (E) screens out 라온 and 사랑 but not 바다. C2="" catches only blanks, never a cell holding text.

The counts

Met counts per formula, plus the total and average aggregates
Met counts per formula, plus the total and average aggregates
What was countedValueFormula used
「달성」 counted by the basic formula5=COUNTIF(D2:D10,"달성")
「달성」 counted by the blank-aware formula4=COUNTIF(E2:E10,"달성")
「달성」 counted by the IFS formula3=COUNTIF(F2:F10,"달성")
Cells the blank-aware formula left empty2=COUNTBLANK(E2:E10)
Actuals actually entered6=COUNT(C2:C10)
Sum of actuals399.5=SUM(C2:C10)
Average of actuals66.5833…=AVERAGE(C2:C10)
Total rows9=COUNTA(A2:A10)

The answer a human counts by eye is 3. The basic formula counted two extra (사랑, 바다) and the blank-aware formula one extra (바다). Two out of a 9-row table is 22% wrong.

The average carries the same trap. There are 9 rows but COUNT found only 6 actuals, so AVERAGE divides 399.5 by 6 rather than 9 and returns 66.58. Blanks and text are left out of the count. When you report an "average result", check separately what the denominator is.

The boundary and IFS

>= puts an equal value on the met side. That is why 나래's 100=100 came out 「달성」. We changed only the operator to >, added one more column in K, and counted again.

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

Met dropped from 5 (the basic formula D, >=) to 2 with the K formula (>). Three people moved to missed — 나래 (100=100), 사랑 (blank filed against target 0), and 아람 (0 filed against target 0) — leaving only 다온 (120) and 바다 (text) as met.

We did not run the same operator change on the exception-filtering IFS formula (F, met = 3) in Excel during this test. The result below is calculated from the values in the run log above.

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

라온, 사랑 and 바다 are caught by the C2="" or NOT(ISNUMBER(C2)) condition first, regardless of the operator, so only 나래, 다온 and 아람 ever reach the at-or-above comparison. Of those, 나래 and 아람 move to missed, so by calculation the 3 met under F drops to 1 (다온) under M. The same change — swapping >= for > — moves the count by a different amount depending on which formula you apply it to: 5→2 for the plain IF, 3→1 for the IFS that already filters out the exceptions. Whether the company standard is "at or above" or "above" moves the count by that much, so settle that before picking the operator.

IFS reads the conditions from the top and returns the answer of the first one that matches. To see whether order changes the result, we moved the at-or-above-target condition to the front.

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

Met rose from 3 to 5. 바다 (text) and 사랑 (blank against a target of 0) were caught by the first condition and handed 「달성」, never reaching the not-entered and not-a-number conditions behind it. That is the same 5 as the basic formula. Put the exceptions anywhere but the front and there is no point using IFS at all.

A shape worth using

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

On a version without IFS, nest IF instead. Placed alongside on the same 9 rows, all nine gave the same answer as IFS.

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

When you count, do not count only met and missed — count the screened-out rows too and put them in the report.

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

Met 3 + missed 3 + not entered 2 + not a number 1 = 9, which matches the total row count. If the four numbers do not add up to the row count, something has been left out.

What failed

What we did not test

Related notes

Corrected 2026-09-28: Fixed the claim that changing >= to > moved the met count "from 3 to 2." The plain IF formula (D) actually goes from 5 to 2; the IFS formula that already filters out exceptions (F) goes from 3 to 1.