SMALL function

SMALL returns the k-th smallest value from an array, where k=1 gives the minimum and higher k values give progressively larger results.

=SMALL(array, k)

Generate a SMALL formula

Describe what you need. The generator will reach for SMALL where SMALL is the right tool, and tell you when it is not.

How to get a better answer
  • Name your columns by letter and by header: "column F (Net Value)" beats "the amount column".
  • State every condition, including the negatives — "not cancelled" changes the formula's shape.
  • Say where the data starts if it is not row 1, and whether it will grow.
  • Check the settings above match your spreadsheet: the wrong argument separator is a syntax error on your machine.

Arguments

How SMALL reads its arguments
arrayrequiredkrequiredSMALL
ArgumentRequiredDescription
arrayRequiredA range or array to search; automatically ignores blank cells, text, and errors unless they prevent calculation.
kRequiredA positive integer indicating which smallest value to return; k=1 yields the minimum, k=2 the second minimum, and so on; must be between 1 and the count of numeric values in array.

Returns

Returns a number representing the k-th smallest value in the specified array.

Availability

Excel: All · Google Sheets: Supported

Worked examples

1. Find the minimum service cost

VehicleCost
F-150150
Civic85
Tacoma320
Accord45
Ranger275
Corolla120
Silverado450
=SMALL(E2:E8, 1)

Result: 45

With k=1, SMALL returns the smallest value in the cost column. The Accord's maintenance at $45 is the lowest in the fleet's records.

2. Find the second-lowest maintenance cost

VehicleCost
F-150150
Civic85
Tacoma320
Accord45
Ranger275
Corolla120
Silverado450
=SMALL(E2:E8, 2)

Result: 85

k=2 skips the minimum and returns the next smallest cost. The Civic's service charge of $85 is the second-lowest maintenance expense in the fleet.

3. Identify a mid-range service cost

VehicleCost
F-150150
Civic85
Tacoma320
Accord45
Ranger275
Corolla120
Silverado450
=SMALL(E2:E8, 4)

Result: 150

With k=4 on a 7-item dataset, we retrieve the 4th-smallest value ($150 for the F-150), useful for finding middle-tier costs without invoking MEDIAN.

Common errors

Which SMALL error are you seeing?
SMALL returned an error#NUM!
Ensure 1 ≤ k ≤ COUNT(array). For dynamic k values, wrap with IFERROR: =IFERROR(SMALL(array, k), "Value not found") to gracefully handle out-of-range requests.
#VALUE!
Verify k is numeric. Right-click the cell, choose Format Cells, and change the format from Text to Number. Use =VALUE() to convert text strings to numbers if needed.
#REF!
Restore the deleted cells, or update the formula to point to the correct range. Use named ranges for added stability against future structural changes.
ErrorWhy it happensHow to fix it
#NUM!The k argument is zero, negative, or exceeds the number of numeric values in the array—for example, k=10 when the array contains only 7 numbers.Ensure 1 ≤ k ≤ COUNT(array). For dynamic k values, wrap with IFERROR: =IFERROR(SMALL(array, k), "Value not found") to gracefully handle out-of-range requests.
#VALUE!The k argument is text, a formula that returns text, or resides in a cell formatted as Text rather than Number.Verify k is numeric. Right-click the cell, choose Format Cells, and change the format from Text to Number. Use =VALUE() to convert text strings to numbers if needed.
#REF!The array argument references cells that have been deleted, moved, or the sheet they belong to has been removed, breaking the reference link.Restore the deleted cells, or update the formula to point to the correct range. Use named ranges for added stability against future structural changes.

Tips and when to use something else

  • Use SMALL(array, 1) as a more flexible alternative to MIN when you need extended functionality; however, MIN is simpler and clearer if you only want the minimum.
  • Combine SMALL with ROWS or sequence functions like =SMALL(costs, ROW(A$1:A$7)) to generate a sorted list from smallest to largest without manually sorting the original data.
  • For conditional ranking, use FILTER to narrow data first, then apply SMALL: =SMALL(FILTER(costs, criteria), k). Alternatively, wrap SMALL with IF in an array formula.
  • SMALL ignores text and blank cells, making it robust for real-world datasets. However, error values in the array will stop calculation—wrap data with IFERROR to clean problematic cells first.

Frequently asked questions

What's the difference between SMALL and MIN?
MIN returns only the smallest value (equivalent to SMALL with k=1), while SMALL lets you retrieve the 2nd smallest, 3rd smallest, and beyond. Use SMALL when ranking values by size or building percentile analyses.
Can SMALL handle negative numbers and unsorted data?
Yes, SMALL correctly ranks any numbers—including negatives, zeros, and decimals—regardless of input order. It sorts values internally without modifying your source data, making it safe for real-world datasets.
How do I use SMALL to find the k-th smallest based on criteria?
Wrap SMALL with IF in an array formula: =SMALL(IF(criteria, values), k). In Excel 365, use FILTER: =SMALL(FILTER(costs, criteria), k). For single conditions, MINIFS or MAXIFS offer cleaner syntax.
What happens if k is a decimal like 2.5?
SMALL truncates decimals to integers, so 2.5 becomes 2, returning the 2nd smallest. If you need fractional ranking or percentiles, use PERCENTILE or QUARTILE functions instead.

Need a different formula?

The full generator is not scoped to one function — describe any spreadsheet problem and it will pick.

Open the formula generator

Reviewed 2026-09-17