Identifying the most frequent text entry in Excel can be a frustrating hurdle, as the standard MODE function is strictly limited to numerical data. When analyzing dataset trends, referencing standard funding sources like venture capital, angel investments, or government grants often leaves analysts sorting through massive columns of text manually.
Deploying an advanced array formula grants you immediate, automated clarity over these qualitative data points. As an important educational stipulation, this formula must be configured to ignore empty cells to prevent errors. For example, identifying "Series A" as the most common funding type in a transaction list becomes effortless. Below, we detail the exact formula syntax to retrieve your text mode instantly.
Excel's built-in statistical functions are incredibly powerful, but they sometimes have surprising limitations. One of the most common hurdles Excel users face is trying to find the most frequently occurring text value in a column. If you try to use the standard MODE or MODE.SNGL functions on a range containing text, Excel will return a frustrating #N/A error. This happens because Excel's mode functions are mathematically designed to process only numeric data.
Fortunately, you can easily bypass this limitation. By combining traditional lookup functions with modern array formulas, you can extract the most common text value (the "text mode") from any dataset. This guide will walk you through the best formulas to find the mode of text values in Excel, ranging from classic formulas compatible with older versions to advanced dynamic array solutions for Excel 365 and Excel 2021.
To find the mode of a text column, we have to translate our text values into numbers, find the mathematical mode of those numbers, and then translate that numeric mode back into the original text. We achieve this using three core functions:
MATCH: Converts each text entry into a numeric position (the row number where the text first appears).MODE (or MODE.SNGL): Identifies the most frequently occurring numeric position.INDEX: Looks up the actual text value corresponding to that winning numeric position.If you are working on an older version of Excel (Excel 2019, 2016, or older), you will need to use a traditional array formula. The standard formula structure is as follows:
=INDEX(A2:A15, MODE(MATCH(A2:A15, A2:A15, 0)))
Note: Because this is an array formula in older Excel versions, you must press Ctrl + Shift + Enter instead of just Enter after typing it. When done correctly, Excel will wrap the formula in curly braces { }.
Let's assume your dataset in range A2:A7 contains the following values: {"Apple", "Banana", "Apple", "Orange", "Banana", "Apple"}.
MATCH Step: MATCH(A2:A7, A2:A7, 0) searches for each item in the range against itself. Because MATCH only returns the first occurrence of a match, it generates an array of positions: {1, 2, 1, 4, 2, 1}. Notice how "Apple" (positions 1, 3, and 6) is represented as 1 every time, and "Banana" is represented as 2.MODE Step: MODE({1, 2, 1, 4, 2, 1}) evaluates this array of numbers. Since the number 1 appears three times, it is identified as the mode.INDEX Step: Finally, INDEX(A2:A7, 1) retrieves the value from the first position of our range, which is "Apple".If you are using Microsoft 365 or Excel 2021, Excel's modern calculation engine natively supports dynamic arrays. This means you do not need to press Ctrl + Shift + Enter, and you can take advantage of cleaner, faster functions like XMATCH.
=INDEX(A2:A15, MODE(XMATCH(A2:A15, A2:A15)))
This formula works identically to Method 1, but XMATCH defaults to an exact match, eliminating the need to specify the 0 parameter required by the older MATCH function. It is cleaner to write, faster to execute on large datasets, and does not require complex keystrokes to activate.
Real-world data is rarely perfect. If your text column contains empty cells or blank spaces, the standard MATCH formula will fail and return an #N/A or #VALUE! error. To make your formula robust against empty cells, you must introduce an IF statement to filter out blank values before processing.
=INDEX(A2:A15, MODE(IF(A2:A15<>"", MATCH(A2:A15, A2:A15, 0))))
Using Excel 365, we can use the elegant FILTER function to strip out empty cells before running our calculations:
=LET(clean_range, FILTER(A2:A15, A2:A15<>""), INDEX(clean_range, MODE(XMATCH(clean_range, clean_range))))
The LET function is highly recommended here because it allows us to define clean_range once and reuse it, preventing Excel from having to filter the blank spaces multiple times, which drastically speeds up calculation speeds on large datasets.
What happens if your dataset has a tie? For example, if "Apple" appears four times and "Banana" also appears four times, the standard MODE function will only return the first one it encounters.
If you want to display all of the most frequently occurring text values when there is a tie, you can leverage Excel 365's dynamic array functions: UNIQUE, FILTER, COUNTIF, and MAX.
Use the following formula to spill all tied modes downward into adjacent cells automatically:
=UNIQUE(FILTER(A2:A15, COUNTIF(A2:A15, A2:A15) = MAX(COUNTIF(A2:A15, A2:A15))))
COUNTIF(A2:A15, A2:A15) counts how many times each item appears in the list, returning an array of counts.MAX(COUNTIF(...)) finds the single highest frequency in that array (e.g., if the most common items appear 4 times, it returns 4).FILTER filters the original range to keep only the entries that have a count equal to that maximum frequency.UNIQUE ensures that your final output list only shows each tied mode once, rather than repeating them.If you prefer to have all tied modes listed inside a single cell separated by commas, you can wrap the entire formula inside a TEXTJOIN function:
=TEXTJOIN(", ", TRUE, UNIQUE(FILTER(A2:A15, COUNTIF(A2:A15, A2:A15) = MAX(COUNTIF(A2:A15, A2:A15)))))
To visualize how these formulas behave, consider the following feedback log from a customer service team:
| Row | Column A (Issue Category) |
|---|---|
| 2 | Shipping Delay |
| 3 | Broken Item |
| 4 | [Blank] |
| 5 | Shipping Delay |
| 6 | Billing Error |
| 7 | Broken Item |
| 8 | Shipping Delay |
If we apply our formulas to this range (A2:A8):
=INDEX(A2:A8, MODE(MATCH(A2:A8, A2:A8, 0))) will fail and return #N/A because of the blank cell in Row 4.=INDEX(A2:A8, MODE(IF(A2:A8<>"", MATCH(A2:A8, A2:A8, 0)))) will successfully ignore the blank and output "Shipping Delay" (which appears 3 times).Choosing the right formula depends heavily on your Excel version and whether your dataset contains empty cells. Use this quick reference checklist:
| Scenario | Formula to Use | Execution Method |
|---|---|---|
| Excel 2019 or older (Clean data) | =INDEX(range, MODE(MATCH(range, range, 0))) |
Ctrl + Shift + Enter |
| Excel 2019 or older (With blanks) | =INDEX(range, MODE(IF(range<>"", MATCH(range, range, 0)))) |
Ctrl + Shift + Enter |
| Excel 365 / 2021 (Clean data) | =INDEX(range, MODE(XMATCH(range, range))) |
Standard Enter |
| Excel 365 / 2021 (With blanks) | =LET(c, FILTER(range, range<>""), INDEX(c, MODE(XMATCH(c, c)))) |
Standard Enter |
| Find Ties / Multiple Modes (365 only) | =UNIQUE(FILTER(range, COUNTIF(range, range) = MAX(COUNTIF(range, range)))) |
Standard Enter (Spills) |
By mastering these combinations, you can quickly analyze survey responses, inventory lists, product categories, and any other text-heavy data columns directly within Excel without relying on external databases or complex VBA scripts.
Disclaimer:
The documents and templates provided on this page are for informational and illustrative purposes only. They do not constitute professional, legal, or financial advice, and should not be relied upon as such. Because individual circumstances and regulatory requirements vary, these materials may not be suitable for your specific needs. We recommend consulting with a qualified professional before adapting or using any of these examples for official or commercial purposes.