Most Excel training tells you that MIN is simple: type =MIN(range), hit Enter, done. They’re wrong. It’s the only core function in Excel that treats numbers, dates, logicals, and errors all differently — and worse, it ignores text *without warning*, even when that text looks like a number (e.g., '25.99' in cell B7). I found this out last Tuesday while reconciling Q1 sales for Acme Corp — our dashboard showed $42,100 as the lowest deal, but the real smallest was $38,750… buried in column C as '38750' (formatted as Text). No error. No alert. Just quietly wrong.
Quick Answer
Use =MIN(A1:A10) to return the smallest numeric value in a range. But don’t stop there: wrap it in VALUE() if cells contain number-styled text, exclude blanks with MINIFS, and always verify data types — especially after pasting from CRM exports or PDF tables.
All the Methods
| Method | Steps | Best For | Limitations | Time for 10K rows | Accuracy | Difficulty |
|---|---|---|---|---|---|---|
| Basic MIN | =MIN(B2:B100) | Clean numeric columns (no text/blank headers) | Ignores text, logicals, errors; includes zeros | 0.02 sec | ⚠️ Low if mixed data types | Easy |
| MIN with VALUE array | =MIN(VALUE(B2:B100)) + Ctrl+Shift+Enter (or Enter in 365) | CRM exports where numbers are stored as text | Fails on any truly non-numeric cell (e.g., "N/A") | 0.14 sec | ✅ High (if clean text-numbers) | Medium |
| MINIFS | =MINIFS(C2:C100, B2:B100, ">10000", D2:D100, "Closed") | Conditional minima (e.g., lowest closed deal over $10k) | Not available in Excel 2016 or earlier | 0.09 sec | ✅ High | Medium |
| AGGREGATE(5,6) | =AGGREGATE(5,6,B2:B100) | Ranges with errors (#N/A, #DIV/0!) or hidden rows | Slightly slower; less intuitive syntax | 0.07 sec | ✅ Highest (ignores errors & subs) | Medium-Hard |
| Array + IF (legacy) | =MIN(IF(B2:B100>0,B2:B100)) + Ctrl+Shift+Enter | Pre-MINIFS filtering (e.g., ignore negatives) | Fragile; breaks if array size changes | 0.21 sec | ✅ High (but risky) | Hard |
Method 1 Deep Dive
Let’s say your Sales Lead sheet (Sheet1) has deals in column C, but the first row is a header “Amount ($)”. You select C1:C25 and type =MIN(C1:C25). Excel returns 0 — not because $0 is the smallest deal, but because the header cell C1 contains text, and MIN ignores it… then sees the blank cell C24 (which equals 0), and picks that.
Here’s real data from a test run:
| A (Rep) | B (Date) | C (Amount) | D (Status) |
|---|---|---|---|
| Sarah Chen | 2024-02-14 | 45200 | Closed |
| Diego Mora | 2024-02-18 | 38750 | Closed |
| Priya Patel | 2024-02-22 | 51300 | Pending |
| James Wu | 2024-02-25 | 29999 | Closed |
| Lena Torres | 2024-02-28 | "31500" | Closed |
| Alex Kim | 2024-03-02 | Lost |
If you type =MIN(C2:C7), Excel returns 29999 — correct. But if Lena’s amount is typed as text (notice the quotes in row 5), MIN skips it entirely and still gives 29999. That’s fine — unless you later sort the column and her row moves to C3. Then C2:C7 now includes C3 = "31500" (text), and the result stays 29999. The function doesn’t warn you. It just lies quietly.
Fix: Select C2:C7 → press Alt+H+F*+T (Home > Format > Text to Columns > Finish). This forces Excel to re-evaluate each cell’s type. Then re-run =MIN(C2:C7).
Method 2 Deep Dive
Now imagine you need the smallest deal *only* among Closed opportunities. You can’t use basic MIN — you need conditions. That’s where MINIFS shines.
In the same table above, enter this in cell F1:
=MINIFS(C2:C7, D2:D7, "Closed")
This scans C2:C7, checks D2:D7 for “Closed”, and returns the smallest matching value: 29999. Not 31500 (Lena’s text), not 38750 (Diego’s), just the true minimum among valid Closed entries.
But here’s the counterintuitive part: MINIFS *does* handle text-numbers — unlike basic MIN. Try it with Lena’s cell still as "31500". MINIFS converts it on the fly and includes it. So the result becomes 29999 (still correct), but if Diego’s amount were also text (“38750”), MINIFS would return 29999 — same answer. Only when *all* amounts are text does it break.
Pro tip: If you’re on Excel 2016 or older, use =AGGREGATE(15,6,C2:C7/(D2:D7="Closed"),1). Yes, it’s ugly. But it works. And AGGREGATE ignores errors — so if one cell in D2:D7 is #N/A, the formula won’t crash.
Cheat Sheet
| Task | Formula | Shortcut / Tip | Cell Example |
|---|---|---|---|
| Smallest number in C2:C100 | =MIN(C2:C100) | Always check C1 for headers — delete or exclude | C112 |
| Smallest numeric value, ignoring errors | =AGGREGATE(5,6,C2:C100) | 5 = MIN, 6 = ignore errors & hidden rows | C113 |
| Smallest Closed deal | =MINIFS(C2:C100,D2:D100,"Closed") | Works with text-numbers automatically | C114 |
| Smallest value > $25k | =MINIFS(C2:C100,C2:C100,">25000") | Yes — you can reference the same range twice | C115 |
| Smallest non-zero value | =MINIFS(C2:C100,C2:C100,"<>0") | "<>0" excludes zeros and blanks | C116 |
| Convert text-numbers before MIN | =MIN(VALUE(C2:C100)) | Ctrl+Shift+Enter required in pre-365 | C117 |