Here's what's actually happening: Excel isn't broken. It's doing exactly what you told it to do, but the way you told it is now the problem. The formula `=IF(C14:C17<>"",AVERAGE(C14:C17),"")` doesn't ask for a single result. It asks Excel to evaluate four separate cells (`C14:C17`) against the condition, and then to return a result for each one. That's what "spill" behavior is, Excel's modern array engine treating your range reference as a request for one output per input cell. The blue border is its way of saying, "I'm giving you four answers, and here's where they live." The AVERAGE function itself returns one number, but the IF wrapper is forcing it to repeat that number for every row in the range.
This is a classic moment where a tool's evolution catches a user off guard. You didn't make a mistake; you wrote a formula that would have worked perfectly in an older version of Excel. But the software has moved on, and now it expects you to be explicit about whether you want a single cell result or a dynamic array. The `@` operator you tried is the right instinct, it tells Excel "I only want the one result", but you need to place it correctly. The fix is `=IF(@C14:C17<>"",AVERAGE(C14:C17),"")`. That `@` before the range tells Excel to treat the reference as a single cell (the one on the same row as the formula), not as a four-cell array. No spill, no blue border, just the average you expected.
What this means for you is practical: modern spreadsheets are more powerful, but that power comes with new rules. The old "write a range and let Excel figure out what you meant" approach no longer works the same way. If you're building a form, you almost certainly want to use structured references or explicit single-cell logic. Consider rewriting the formula as `=IF(C14<>"",AVERAGE(C14:C17),"")` if you only need to check the first cell in the range, or switch to an `IFERROR` pattern that handles the array behavior deliberately. The real lesson here isn't about a broken update, it's about learning to speak the language your tool now speaks. Once you add that `@`, you'll get your single average back, and the blue border will disappear.