SMALL Function in Excel
Master the SMALL function to find the k-th smallest value in datasets. Learn syntax, examples, and error solutions for Excel and Google Sheets.
=SMALL(array, k)Quick Answer
SMALL function SMALL function returns the k-th smallest value from a dataset in Excel and Google Sheets. Syntax: `=SMALL(array, k)` where array is your data range and k is the position (1=smallest, 2=second smallest, etc.). Use it for ranking analysis, finding bottom performers, or identifying the lowest values without sorting your entire dataset.
=SMALL(array, k)Practical Examples
Basic: Finding Lowest Test Scores
A teacher wants to identify the three lowest test scores in a class of 20 students
Intermediate: Dynamic Bottom N Analysis
Sales manager needs a flexible dashboard showing bottom N performers where N can be changed
Advanced: SMALL with Conditional Logic
Find the 3rd smallest value only from the West region sales data
Advanced: Creating Quartile Boundaries
Calculate Q1 (first quartile) using SMALL instead of QUARTILE function
Error Handling: SMALL with IFERROR
Prevent errors when k value exceeds available data points
Common Errors and Solutions
SMALL returns #NUM! error
Most commonly occurs when k is less than 1 or greater than the number of numeric values in the array. Also happens when the array contains no numeric values, or when k is not a valid number (text, blank, or error).
1. Verify k is between 1 and COUNT(array) 2. Check that array contains at least one numeric value 3. Ensure k cell contains a valid number, not text or errors 4. Use =COUNT(range) to determine the maximum valid k value 5. Wrap in IFERROR for graceful handling: =IFERROR(SMALL(array, k), "Error: k out of range")
Always validate: k >= 1 AND k <= COUNT(array). Consider using data validation on k input cells to restrict to whole numbers between 1 and the data count.
Example:
SMALL returns #VALUE! error
The array parameter is not a valid range or array, k parameter contains text instead of a number, or array constants are used incorrectly.
1. Verify array is a proper cell range like A1:A10 2. Check k cell contains a numeric value, not text 3. For array constants, use proper syntax with semicolons: {1;2;3;4;5} 4. Convert text to numbers: =SMALL(A1:A10, VALUE(k_cell))
Use data validation on k input cell to restrict to numbers only. Set Allow: Whole Number, Data: between, Minimum: 1, Maximum: 1000 (or appropriate limit).
Example:
SMALL returns unexpected value
Array includes text values that look like numbers (stored as text), hidden or filtered rows affecting expectations, duplicate values causing confusion about ranking, or array includes error values.
1. Ensure all data in range is numeric - use ISNUMBER to check 2. Be aware SMALL ignores text and logical values automatically 3. Clear any filters - SMALL processes all cells including hidden ones 4. Check for errors in source data - use IFERROR in source cells if needed 5. Understand duplicates: two instances of '5' count as two separate positions
Clean data before analysis: convert text to numbers using VALUE(), handle errors with IFERROR, validate numeric format with ISNUMBER. Use COUNT to verify how many values SMALL is actually processing.
Example:
SMALL returns #REF! reference error
The array range was deleted, sheet containing referenced range was deleted, or range reference was broken during cut/paste operation.
1. Verify all referenced ranges exist 2. Check sheet names are correct and sheets haven't been deleted 3. Recreate formula with fresh range references 4. Use named ranges (Ctrl+F3) for better reference stability
Create named ranges for important datasets instead of using direct cell references. For example, create a named range 'SalesData' for A2:A100, then use =SMALL(SalesData, k). Named ranges survive sheet moves and are less prone to breaking.
Example:
Advanced Tips and Best Practices
Combine with INDEX-MATCH for Complete Records
SMALL only returns the value, not associated data like names or IDs. Use INDEX-MATCH to retrieve complete records. For example, to find the sales rep with the 3rd lowest sales, use: =INDEX(B:B, MATCH(SMALL(C:C, 3), C:C, 0)). SMALL finds the 3rd lowest sales value, MATCH locates its position in the sales column, and INDEX returns the corresponding sales rep name from column B. This gives you complete context, not just numbers.
Dynamic Bottom N with SEQUENCE (Excel 365)
Generate bottom N values automatically using dynamic arrays. Instead of copying formulas down manually, use: =SMALL(A2:A100, SEQUENCE(5)). This single formula returns an array of the 5 smallest values vertically: {smallest, 2nd smallest, 3rd smallest, 4th smallest, 5th smallest}. Change the number inside SEQUENCE to get more or fewer results. This approach replaces multiple formulas with one, and changes to N automatically update all results. In Google Sheets, use ARRAYFORMULA: =ARRAYFORMULA(SMALL(A2:A100, ROW(1:5)))
Use Named Ranges for Maintainability
Instead of =SMALL(A2:A100, 3), create a named range called 'Scores' for A2:A100, then use =SMALL(Scores, 3). This makes formulas self-documenting and easier to update. To create a named range: 1) Select range A2:A100, 2) Press Ctrl+Shift+F3 or go to Formulas > Define Name, 3) Name it 'Scores', 4) Use =SMALL(Scores, 3) in your formulas. Benefits include better readability (Scores is clearer than A2:A100), easier maintenance (change the range definition once to update all formulas), and no broken references when moving data around your worksheet.
Performance with Large Datasets
SMALL is efficient even with large datasets (100,000+ rows) because it only returns a single value and Excel optimizes the internal sorting. However, avoid using SMALL in array formulas across thousands of cells - this creates massive overhead. Benchmark: A single SMALL on 100k rows takes less than 0.1 seconds, but 1000 SMALL formulas on the same range can take 5-10 seconds. For multiple k values, calculate once using SEQUENCE (Excel 365) or copy formulas to adjacent cells rather than recalculating across distant cells.
SMALL Ignores Non-Numeric Data
Text, blank cells, and logical values (TRUE/FALSE) are automatically excluded from SMALL calculations. Only numeric values count toward the total. If your range has 100 cells but only 80 contain numbers, k can only be 1-80, not 1-100. Example: Range A1:A10 contains {5, 'text', 10, '', 3, TRUE, 8, 12, FALSE, 6}. COUNT returns 5 (only the numbers count). Valid k values are 1-5 only. Attempting k=10 causes #NUM! error because there are only 5 numeric values. Always use COUNT(range) to determine maximum valid k.
Handling Ties and Duplicates
SMALL treats duplicate values as separate positions. If your dataset is {5, 10, 10, 15}, SMALL(...,1) returns 5, SMALL(...,2) returns 10 (the first instance), SMALL(...,3) also returns 10 (the second instance), and SMALL(...,4) returns 15. Each duplicate occupies its own rank position. This behavior is useful when multiple records have the same value and you want to account for all of them. It differs from RANK, which assigns the same rank to ties.
Validate k Before Using SMALL
In interactive dashboards where users input k values, validate the input to prevent errors and provide clear feedback. Use: =IF(AND(k>=1, k<=COUNT(DataRange)), SMALL(DataRange, k), "Invalid: k must be 1-" & COUNT(DataRange)). This checks if k is within valid range (1 to the count of numeric values) before executing SMALL. If k is invalid, it displays a helpful message like 'Invalid: k must be 1-85' instead of a cryptic #NUM! error. This greatly improves user experience in dashboards and reports.
Need Help with SMALL Function in Excel?
Stop struggling with formula syntax. Use AskFormulas to generate validated formulas instantly with our AI-powered tool.
Example Excel formula:
Related Formulas
The LARGE function returns the k-th largest value from a dataset. Learn how to find top values, combine with other functions, and avoid common errors.
Master the MAX function to find the largest value in your data. Learn syntax, examples, error handling, and best practices for Excel and Google Sheets.
Master the MIN function to find minimum values in Excel and Google Sheets. Learn examples, handle errors, and optimize data analysis with this guide.
The RANK function returns the rank of a number within a list. Learn to rank data in ascending or descending order with examples.