Excel MIN Function
MIN returns the smallest number in a set of values, ignoring text, blanks, and logical values.
MIN returns the smallest number in a list or range you give it. It ignores text, blank cells, and the logical values TRUE and FALSE, so it only looks at actual numbers. The one thing to watch: if your range contains an error value anywhere, MIN returns that error instead of a number, with no warning.
Syntax
=MIN(number1, [number2], ...)
| Parameter | Required | Description |
|---|---|---|
number1 | Yes | A number, cell reference, or range to check. Can also be a range name. |
number2, ... | No | Additional numbers or ranges. You can add up to 255 arguments total. |
MIN has no optional argument that changes behavior, so there's no dangerous default to flag here. The only quiet risk is what MIN does when there's nothing to compare, covered below.
Basic Example
You're tracking daily temperatures for a week and want the lowest reading.
=MIN(B2:B8)
// B2:B8 = the range of seven daily temperature readings
MIN scans all seven cells, skips anything that isn't a number, and returns the smallest value it finds. If B2:B8 holds 68, 72, 61, 75, 70, 66, and 64, the formula returns 61. Add a new day's reading to the range and the result updates automatically.
How MIN Works
It ignores text, blanks, and logical values — unless they're typed directly
MIN only evaluates numbers. If a cell in your range contains the word "N/A," an empty cell, or TRUE/FALSE, MIN skips it entirely rather than treating it as zero. This matters if you're pulling from a column where some rows are intentionally left blank pending data entry.
That rule only holds for cell references and ranges. Type a logical value straight into the formula and MIN uses it: =MIN(5, TRUE) returns 1, not 5, because TRUE becomes 1 when it's a literal argument instead of something MIN reads out of a cell.
It works across multiple ranges and single values
You can mix ranges and individual numbers in one formula. =MIN(A2:A10, C2:C10, 50) checks both ranges plus the literal value 50 and returns whichever is smallest across all three inputs.
Negative numbers are treated normally
MIN has no bias toward positive values. Given -15, 8, and -22, it correctly returns -22. This trips people up when they expect MIN to return the value "closest to zero" rather than the true mathematical minimum.
It returns 0 if there's nothing to compare
If every cell in the range is text, blank, or otherwise non-numeric, MIN returns 0. This is not an error, and it will not get caught by IFERROR. Check for this case separately if a real 0 in your data would be misleading.
Dates work because they're stored as numbers
Excel stores dates as serial numbers, so =MIN(A2:A20) on a column of dates returns the earliest date in the range. Format the result cell as a date if it displays as a number instead.
Common Use Cases
Finding the lowest price in a product list
You want the cheapest item across a pricing column without sorting the sheet.
=MIN(products[Price]) // returns the lowest price in the Price column
Finding the earliest order date
Pull the first date in a list of order timestamps.
=MIN(orders[OrderDate])
// orders[OrderDate] = a table column of order dates stored as serial numbers
Excluding zero from the minimum
Test scores of 0 usually mean "no attempt," not a real low score, so a plain MIN would return a misleading result.
=MIN(IF(scores>0, scores))
// scores = the range of test scores
// IF(scores>0, scores) = replaces any score of 0 with FALSE, which MIN then ignores
Enter this as an array formula with Ctrl+Shift+Enter in older Excel versions. In Excel 365, you can enter it as a normal formula and it spills automatically as a dynamic array.
Finding the minimum with a condition
To find the lowest salary in a specific department, MIN alone can't filter by criteria. Use MINIFS instead:
=MINIFS(employees[Salary], employees[Department], "Sales")
// employees[Salary] = the range MIN checks
// employees[Department] = the range the condition is evaluated against
// "Sales" = the condition, only Sales rows are considered
Handling Errors
If any cell in its range holds an error, MIN doesn't calculate around it. It returns that exact error, unchanged — a #DIV/0! in the range comes back as #DIV/0!, an #N/A comes back as #N/A. MIN passes the original error through rather than converting it to something generic.
Common causes:
- A cell in the range contains
#N/A,#DIV/0!,#REF!, or another error value - A referenced cell was deleted, leaving a broken reference
- The range includes a formula that failed to calculate correctly
=IFERROR(MIN(A2:A50), "Error in range") // catches any error from A2:A50, not a legitimate 0
IFERROR catches whatever error MIN passes through, regardless of which one it is. It does nothing for the case covered above, where MIN legitimately returns 0 because the range has no numbers to compare. That 0 is a valid result, not an error, so IFERROR will never see it.
MIN does not skip errors the way it skips text. One #N/A anywhere in the range poisons the entire result. If your data pulls from formulas that might error out, wrap the range in AGGREGATE instead: =AGGREGATE(5, 6, A2:A50) calculates the minimum while ignoring error values, where 5 selects the MIN function and 6 tells AGGREGATE to skip errors.
Notes & Gotchas
Why does MIN return 0 instead of an error?
MIN returns 0 when none of its arguments contain a number, not when there's a genuine problem. This happens most often when a range is entirely text, entirely blank, or filtered down to nothing. Because 0 is a valid number, IFERROR won't catch this case. Check with =IF(COUNT(range)=0, "No numbers found", MIN(range)) if a false 0 would cause problems downstream.
Why does MIN return an error instead of a number?
At least one cell in the range holds an actual error value, not just text. MIN can't skip errors the way it skips text or blanks. It propagates the first one it finds, keeping the original error code rather than converting it to something generic — a #DIV/0! stays #DIV/0!, an #N/A stays #N/A. Find and fix the source error, or switch to AGGREGATE(5, 6, range) to calculate the minimum while ignoring errors.
Does MIN ignore blank cells?
Yes. A truly empty cell contributes nothing to the calculation and MIN treats it as if it weren't in the range at all. A cell that looks blank but contains an empty text string (="") is different: some setups treat that as text, which MIN also ignores, but it can behave inconsistently depending on how the cell was populated. Check with =ISBLANK() if you're unsure which case you're dealing with.
Does MIN work with dates and times?
Yes, because Excel stores both as serial numbers behind the scenes. =MIN(A2:A30) on a range of dates returns the earliest date as a serial number. Format the result cell with a date format, or it will display as a plain number like 46246 instead of a readable date.
What's the difference between MIN and MINIFS?
MIN returns the smallest number in a range, full stop, with no filtering. MINIFS returns the smallest number in a range that also meets one or more conditions you specify, and it supports up to 126 condition pairs. Use MIN for a straight minimum, MINIFS when you need "smallest value where department equals Sales" or similar criteria-based results.
Why does MIN treat TRUE and FALSE differently from MINA?
MIN ignores TRUE and FALSE when they come from a cell or range, as if those cells were blank. MINA evaluates them numerically instead, treating TRUE as 1 and FALSE as 0, and it also counts text as 0 rather than skipping it. If a range mixes logical values with numbers and you expect MIN to factor them in, switch to MINA, but check the result carefully since text cells will drag the minimum down to 0.
Related Functions
| Function | Use this when... |
|---|---|
MAX | You need the largest value instead of the smallest. |
MINIFS | You need the smallest value that also meets one or more conditions, like the lowest salary in a specific department. |
MINA | Your range mixes logical values or text with numbers and you want them counted instead of ignored. |
Related Functions
Excel AVERAGEIF Function
AVERAGEIF calculates an average based on a single condition, no helper columns needed. Here's how the syntax works, where it silently gives wrong answers, and when to switch to AVERAGEIFS.
Excel COUNT Function
COUNT answers one question: how many of these cells actually hold a number? It's the fastest way to check for missing data before you build a chart, average, or dashboard on top of it.
Excel COUNTA Function
COUNTA tells you how many cells in a range actually contain something. It's the function to reach for when you need a count that includes text and dates, not just numbers.
Excel COUNTBLANK Function
COUNTBLANK tells you how many cells in a range are empty, which makes it the fastest way to spot missing entries in a form, order list, or survey. But it counts more than truly empty cells, and that trips people up.