How to Show the 10 Most Common Text Values in Excel

Learn multiple Excel methods to list the 10 most frequent text values—complete with step-by-step examples, business use cases, and expert tips.

excelformulaspreadsheettutorial
12 min read • Last updated: 7/2/2025

How to 10 Most Common Text Values in Excel

Why This Task Matters in Excel

Whether you manage sales pipelines, customer-service logs, marketing surveys, or manufacturing defect lists, you almost always need to know which categories appear most often. In a product-feedback worksheet, “Late Delivery” might dominate complaint reasons; in an HR exit-interview file, “Better Salary” may top the departure reasons. Identifying the top 10 occurrences instantly highlights focus areas, uncovers hidden patterns, and drives data-driven decision-making.

Excel is perfectly suited to this because (1) it stores data in tabular format, (2) it offers multiple aggregation engines—formulas, PivotTables, and Power Query—and (3) it allows you to make the result dynamic so that it automatically updates when new records arrive. Not having this skill means tedious manual counting, copy-pasting into helper sheets, and a real chance of overlooking emerging issues. In fast-moving industries—e-commerce, healthcare, financial services—such delays can translate directly into lost revenue or compliance failures.

Moreover, generating a “Top-N list” is a gateway technique that ties into other indispensable Excel competencies: dynamic arrays, advanced filtering, dashboard building, data validation, and even VBA automation. Mastering it builds confidence for related tasks such as top 10 customers by revenue, bottom 5 performers by sales, or most common error codes in log files.

In short, learning how to return the 10 most common text values provides immediate analytical power, reduces manual effort, and sets the stage for more sophisticated data projects.

Best Excel Approach

The most efficient modern solution combines Excel 365’s dynamic arrays with four core functions: UNIQUE, COUNTIF, SORTBY, and either TAKE or INDEX + SEQUENCE. This single formula returns a live list that expands or contracts automatically when your source data changes.

Why this approach is best

  • It is 100 percent formula-driven—no manual refresh.
  • It works in a single cell and spills the results below, avoiding helper columns.
  • It is fast even for thousands of rows because COUNTIF is a native aggregate.
  • It remains readable when wrapped inside LET for self-documenting parameters.

Prerequisites

  • Microsoft 365, Office 2021, or Excel for the web (for dynamic arrays).
  • Your text column must be in a contiguous range with no blank header.
  • Ideally, convert the range to an Excel Table so the formula expands as you append rows.

Core logic

  1. Filter out blanks.
  2. Generate a list of unique text values.
  3. Count each unique item in the original list.
  4. Sort the uniques by their frequency, descending.
  5. Return only the first 10 items.

Recommended dynamic-array formula:

=LET(
    txt,  A2:A1000,                       /* source data */
    clean, FILTER(txt, txt<>""),          /* remove blanks */
    u,     UNIQUE(clean),                 /* distinct items */
    freq,  COUNTIF(clean, u),             /* frequency per distinct item */
    sorted, SORTBY(u, freq, -1),          /* sort descending by freq */
    TAKE(sorted, 10)                      /* show top 10 */
)

If TAKE is not available, swap the last line for INDEX + SEQUENCE:

=LET(
    txt,  A2:A1000,
    clean, FILTER(txt, txt<>""),
    u,     UNIQUE(clean),
    freq,  COUNTIF(clean, u),
    sorted, SORTBY(u, freq, -1),
    INDEX(sorted, SEQUENCE(10))
)

Alternative PivotTable solution

/* No formula – create a PivotTable */

A PivotTable requires no formulas and works in every Excel version since 2007, making it a great fallback for organizations on older Office builds.

Parameters and Inputs

Data range (txt)

  • Type: text values in a single column (e.g., [A2:A1000]).
  • Must be consistent; avoid mixing numbers and text unless you intend them both.
  • Recommend converting to an Excel Table named tblData to auto-expand.

Number of items to return (optional)

  • Dynamic arrays allow you to substitute 10 with a cell reference like [E1], letting users pick any top-N value.
  • Validate the user input with Data Validation to prevent negative or blank numbers.

Handling blanks

  • FILTER(txt, txt<>\"\") excludes empty cells, ensuring blanks do not rank in the top 10.
  • If you actually want to count blanks as “(Blank)”, skip the FILTER step and instead use IF(txt=\"\", \"(Blank)\", txt) to convert blanks into a label.

Case sensitivity

  • COUNTIF is not case-sensitive; “Apple” and “APPLE” count together.
  • If you need case-sensitive counting, use EXACT in a more complex SUMPRODUCT setup (see Advanced Technique).

Non-text entries

  • COUNTIF treats numbers and text separately. If the column occasionally stores numbers (e.g., error codes like 404), they will still count, but you may want to wrap the range in TEXT to standardize the datatype.

Edge cases

  • Fewer than 10 unique items: TAKE or INDEX + SEQUENCE will simply return what is available.
  • New rows appended: tables auto-extend; the formula response is immediate.
  • Duplicate counts: ties keep the original order UNIQUE encounters; you can add a secondary sort on the item name to make results deterministic.

Step-by-Step Examples

Example 1: Basic Scenario

Suppose a small café surveys 50 customers and records their favorite beverage in column A starting at row 2. The list includes “Latte”, “Espresso”, “Mocha”, and occasional blanks where customers skipped the question.

  1. Enter the sample data or paste a larger real list into [A2:A51].
  2. Select B2 and paste the recommended formula:
=LET(txt,A2:A51, clean,FILTER(txt,txt<>""), u,UNIQUE(clean), freq,COUNTIF(clean,u), sorted,SORTBY(u,freq,-1), TAKE(sorted,10))
  1. Press Enter. The spill icon appears, and cells B2:B11 fill with the 10 most common drinks.
  2. Add another “Latte” to A52. Observe the live list—“Latte” may jump higher in ranking or stay first if it was already leading.
  3. Delete all “Mocha” entries. The list contracts automatically, now possibly showing only eight items if fewer than 10 categories remain.

Logic explained

  • UNIQUE reduces roughly 50 entries to 5-6 distinct drinks.
  • COUNTIF computes a count array like [20,15,8,5,2].
  • SORTBY orders drinks by that count, highest first.
  • TAKE simply limits the results to 10 or fewer.

Common variations

  • Show frequencies alongside items: wrap the whole LET in HSTACK(sorted, TAKE(freqSorted,10)).
  • Present results horizontally: nest TRANSPOSE around the final output.

Troubleshooting
If the spill area is blocked you’ll get a #SPILL! error. Clear any values or formatting in B2:B11 to allow the spill. If you see unexpected duplicates, verify that trailing spaces aren’t present by adding TRIM around txt.

Example 2: Real-World Application

A logistics company logs delay reasons in an Excel Table named tblDelays with the column [Reason]. The file contains 15,000 rows and is updated daily through a data connection.

Business requirement

  • A dashboard must always show the current top-10 delay reasons.
  • Managers also want to see counts next to each reason.

Implementation

  1. Create a new worksheet called “Dashboard”.
  2. In B3, input the dynamic formula:
=LET(
    txt,  tblDelays[Reason],
    clean, FILTER(txt, txt<>""),
    u, UNIQUE(clean),
    freq, COUNTIF(clean, u),
    sorted, SORTBY(u, freq, -1),
    topReasons, TAKE(sorted, 10),
    topCounts,  TAKE(SORTBY(freq, freq, -1), 10),
    HSTACK(topReasons, topCounts)
)
  1. Format the right column as Number with no decimals.
  2. Add conditional data bars to the counts to create an instant bar-style ranking.
  3. Anchor charts or form controls that reference B3:C12 so management can toggle between the last 7, 30, or 90 days by changing tblDelays’ query parameter.

Integration with other features

  • The LET formula lives in one cell; slicers or timelines linked to tblDelays automatically recalc it.
  • Add a small macro to export B3:C12 as a picture for inclusion in PowerPoint reports.
  • Feed the same result into the XLOOKUP source of a dynamic chart title—e.g., “Top Delay: \"&B3.

Performance consideration
Because COUNTIF operates on 15k rows, calculation is instantaneous. If the table were hundreds of thousands, consider turning off automatic calculation or moving the logic to Power Query (see Alternative Methods).

Example 3: Advanced Technique

Scenario
An international retailer tracks return reasons across regional worksheets (North, South, East, West). Each sheet’s column B lists reasons such as “Damaged”, “Wrong Size”, and “Changed Mind”. The leadership team wants one consolidated top-10 list that is (a) case-sensitive, (b) parameterized by a cell input for “Top N”, and (c) compatible with Excel 2019 where dynamic arrays are unavailable.

Solution outline

  1. Consolidate data with Power Query into a single table qryReturns.
  2. Use SUMPRODUCT for case-sensitive counting.
  3. Employ helper columns (since dynamic arrays are missing) plus INDEX/MATCH to return ranked items.

Steps
a) Merge sheets with Power Query: Data → Get & Transform → Append Queries. Load to a table named tblReturns.
b) Add a helper column C (ReasonUpper) `=UPPER(`[@Reason]) to normalize case.
c) In E2 enter this array (Ctrl+Shift+Enter in pre-365):

=INDEX(tblReturns[Reason], MATCH(LARGE(
    FREQUENCY(IF(tblReturns[ReasonUpper]<>"", 
                MATCH(tblReturns[ReasonUpper], tblReturns[ReasonUpper],0),""), 
             ROW(tblReturns[ReasonUpper])-MIN(ROW(tblReturns[ReasonUpper]))+1), 
    ROW(INDIRECT("1:"&$B$1))), 
  FREQUENCY(IF(tblReturns[ReasonUpper]<>"", 
                MATCH(tblReturns[ReasonUpper], tblReturns[ReasonUpper],0),""), 
             ROW(tblReturns[ReasonUpper])-MIN(ROW(tblReturns[ReasonUpper]))+1),0))

d) Copy downward to return 10 rows.
e) In F2 add `=COUNTIF(`tblReturns[Reason], E2) and copy down.

Although lengthy, this method satisfies the no-dynamic-array requirement, respects case (via UPPER), and uses cell B1 as the “Top N” parameter.

Error handling

  • Wrap the MATCH inside IFERROR to skip #N/A when fewer items exist than requested.
  • Provide a data validation message if B1 exceeds the unique count.

Professional tips

  • Document each helper column with comments.
  • Group the helper columns in a hidden sheet to keep the main dashboard tidy.
  • For very large datasets, run the grouping entirely in Power Query, then output just the ranked list.

Tips and Best Practices

  1. Convert source ranges to Excel Tables. Tables auto-resize, making formulas maintenance-free.
  2. Name your ranges using the Name Manager for readable LET parameters (e.g., srcReasons rather than A2:A1000).
  3. Use LET to store sub-arrays; calculation only happens once per variable, improving speed and clarity.
  4. Combine HSTACK with COUNTIF results to show both item and frequency in one spill—ideal for dashboards.
  5. For interactive top-N, link TAKE’s count argument (10) to a cell validated between 1 and 20, then use a form control spin button to change it quickly.
  6. If your dataset is huge and arrives hourly, consider Power Query grouping. You can then refresh with one click instead of recalculating formulas.

Common Mistakes to Avoid

  1. Forgetting to exclude blanks. This causes an empty string to rank highly, skewing results; always apply FILTER or IF(txt<>\"\").
  2. Using COUNTIF on an unsanitized range containing leading/trailing spaces. “Apple” and “Apple ” will be counted separately. Apply TRIM and CLEAN earlier in the process.
  3. Hard-coding 10 without thinking ahead. When business users ask for a top 15 next week, you’ll edit formulas again. Parameterize from the start.
  4. Over-formatting the spill range. Manually typed values, merged cells, or extra borders often produce #SPILL! errors. Keep the destination clear and style through conditional formatting instead.
  5. Assuming case sensitivity. COUNTIF, UNIQUE, and most Excel text functions are not case-sensitive. If your analysis depends on “SKU” versus “sku”, switch to more complex SUMPRODUCT or Power Query methods.

Alternative Methods

MethodVersions SupportedEase of UseRefresh NeededPerformance (100k rows)ProsCons
Dynamic array formula365/2021/WebHighAutoExcellentOne cell, fully dynamicRequires modern Excel
PivotTableAll (2007+)Very HighRefresh clickExcellentGUI-driven, no formulasStores counts separately; extra step to sort top 10
Power Query2016+MediumRefresh clickExcellentHandles millions of rows; case-sensitive groupingNot live until refreshed; learning curve
Helper columns + INDEXPre-365LowAutoGood (if limited rows)Works everywhereCSE formulas, more maintenance
VBA macroAllLowManual/AutoDepends on codeUltimate flexibilitySecurity warnings, programming required

When to choose each

  • Use dynamic arrays if you’re on Microsoft 365—they’re simplest.
  • Choose PivotTables for quick ad-hoc exploration or if colleagues need slice-and-dice interactivity.
  • Opt for Power Query for very large datasets, complex cleaning, or scheduled ETL pipelines.
  • Rely on helper columns where corporate policy prevents Office 365 deployment.
  • Deploy VBA when you must write the output to multiple workbooks or trigger ranking as part of a larger automation.

Migration strategy
Starting with helper columns? Transition is simple: convert your range to a Table and paste the dynamic array formula in an empty cell—the new method takes over while the old one remains as fallback during testing.

FAQ

When should I use this approach?

Use it whenever you need a constantly updating snapshot of categorical frequency—customer complaints, support ticket topics, HR departure reasons, product return causes, or survey multiple-choice answers. It is ideal for dashboards where stakeholders want to understand “What do we hear most often right now?”

Can this work across multiple sheets?

Yes. Combine ranges with VSTACK (365) or use Power Query’s Append Queries. For formulas: =VSTACK(Sheet1!A2:A1000, Sheet2!A2:A1000, Sheet3!A2:A1000), then feed that array into the LET pipeline. For older Excel, copy sheets into one column or consolidate via VBA.

What are the limitations?

COUNTIF is not case-sensitive, and dynamic arrays require modern Excel. TAKE is still in preview for some channels—use INDEX + SEQUENCE instead. Extremely large datasets (millions of rows) may exceed workbook limits; pivot or Power Query is better there.

How do I handle errors?

Wrap the final spill in IFERROR: IFERROR( formula , "") to suppress #N/A when fewer than 10 distinct items exist. For #SPILL!, look for obstructing data. When Power Query fails to refresh, check column type changes or missing connections.

Does this work in older Excel versions?

Not the dynamic array technique. Use PivotTables, helper columns, or Power Query (available since 2016). Any version can still achieve the goal, just with more steps.

What about performance with large datasets?

Dynamic arrays are surprisingly efficient; COUNTIF is multi-threaded. For datasets over 300 k rows, consider disabling automatic calculation or moving the aggregation to Power Query, which uses the high-performance “M” engine. Avoid volatile functions like INDIRECT in your LET; they force recalculation.

Conclusion

Being able to surface the 10 most common text values is a deceptively powerful analytical trick. It helps you spot dominant themes, allocate resources, and communicate insights clearly—all without leaving Excel. Whether you leverage dynamic array formulas, PivotTables, or Power Query, mastering this task enriches your toolbox for dashboards, data audits, and executive reports. Experiment with these methods on your own data, parameterize the “Top N” count, and weave the results into charts for maximum impact. Keep exploring: the same logic extends effortlessly to “Top-N by number” and other ranking challenges.

We use tracking cookies to understand how you use the product and help us improve it. Please accept cookies to help us improve.