How to Multiple Matches In Comma Separated List in Excel

Learn multiple Excel methods to gather multiple matches in a comma-separated list with step-by-step examples, business use-cases, and practical tips.

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

How to Multiple Matches In Comma Separated List in Excel

Why This Task Matters in Excel

Imagine you are the analyst responsible for summarising customer feedback, generating inventory alerts, or building an interactive quoting tool. In all of those workflows, you routinely face the same request:

“Give me all the items that meet a condition, but give them to me in one cell, separated by commas.”

On the surface it sounds trivial, yet it solves several practical problems:

  1. Condensing data for dashboards
    Executives rarely want a 3 000-row detail sheet. They want a single cell that says, for example, “Red, Blue, Green” to show the colours currently out of stock or “HR, Finance, IT” to list departments that still owe a report.

  2. Building validation and search tools
    When you type a customer name and instantly see all contacts for that customer in a drop-down, Excel is behind the scenes gathering multiple matches and presenting them as one comma-delimited string.

  3. Simplifying downstream processing
    CSV exports, Power BI parameters, SQL IN() clauses, and many other systems accept lists separated by commas. Producing that string directly in Excel saves repetitive copy-paste steps and removes human error.

  4. Improving readability in reports
    A single cell with a concise list makes a worksheet cleaner, especially when you distribute static PDF snapshots or print hardcopies for meetings.

  5. Enabling conditional alerts
    You may want an e-mail to say “The following clients are overdue: Alpha, Gamma, Delta.” That sentence is dynamically built from a comma-separated list formula before being handed to Outlook’s mail-merge or Power Automate.

Because Excel is ubiquitous, users from finance, marketing, logistics, manufacturing, education, and IT all encounter this need. If you cannot produce comma-separated multiple matches, you risk:

  • Duplicating work: people resort to manual copy-paste every reporting cycle.
  • Introducing errors: one missed item can lead to stock-outs, missed invoices, or compliance penalties.
  • Slowing decision-making: stakeholders wait while analysts manipulate data.
  • Breaking automation: downstream tools receiving partial lists fail silently.

Conversely, mastering this task connects seamlessly to other Excel skills—dynamic arrays, data validation, Power Query, and even VBA—for a robust analytical workflow. Once you understand how to gather multiple values into a single cell, you can adapt the technique to dates, numbers, sentences, or even URLs.

Best Excel Approach

For modern Microsoft 365 or Excel 2021 users, the most efficient solution couples the new dynamic array engine with FILTER and TEXTJOIN:

=TEXTJOIN(", ", TRUE, FILTER(ReturnRange, CriteriaRange=LookupValue))

Why this method is best:

  • Simplicity — one compact formula, naturally spilling if needed.
  • Accuracy — FILTER returns exactly the rows that meet the criterion; TEXTJOIN concatenates them with a delimiter.
  • Performance — dynamic arrays eliminate helper columns and reduce recalculation volatility.
  • Clarity — the logic reads almost like English: “join, with commas, the items where criteria equals lookup value.”

When to use:

  • Microsoft 365 / Excel 2021 and later.
  • Datasets under roughly 200 000 rows (beyond that, consider Power Query).

Prerequisites:

  • Source data in contiguous ranges with no blank rows inside the area you’re filtering.
  • A single-cell lookup value (though multi-criteria extensions are possible, as we’ll see later).

Alternative for older Excel (2010-2019):

=TEXTJOIN(", ", TRUE, IF(CriteriaRange=LookupValue, ReturnRange, ""))

Confirm with Ctrl + Shift + Enter because it is an array formula in legacy Excel. Although powerful, it recalculates slower, and debugging nested IF plus TEXTJOIN can be challenging.

Parameters and Inputs

ReturnRange

  • The column (or row) containing the items you want combined, e.g., [B2:B1000].
  • Data type: any (text, number, date). TEXTJOIN will coerce everything to text during concatenation.

CriteriaRange

  • The equally-sized column against which you test the condition, e.g., [A2:A1000].
  • Must be the same height (or width) as ReturnRange; mismatched dimensions will trigger a #VALUE! error.

LookupValue

  • The specific value you are checking for, e.g., a single cell like [E2] containing “North”.
  • Can be text, number, logical TRUE/FALSE, or even a dynamic array itself when doing multi-select concatenation.

Delimiter (\", \" in our examples)

  • Optional — any string used to separate items. You may choose \"; \", CHAR(10) for line breaks, or an empty string for direct concatenation.

IgnoreEmpty (the second argument in TEXTJOIN)

  • TRUE tells Excel to omit blank results, preventing consecutive commas like \", ,\".
  • If you explicitly need placeholders, pass FALSE.

Edge-case inputs

  • Trailing spaces: use TRIM(ReturnRange) inside the FILTER or IF to standardise values.
  • Mixed data types: wrap ReturnRange in TEXT(ReturnRange,\"@\") for consistent output.
  • Empty criteria: nest your formula inside IF(LEN(LookupValue)=0,\"\",YourFormula) to avoid showing an empty string of commas.

Step-by-Step Examples

Example 1: Basic Scenario

Suppose you manage a small retail sheet with a list of orders:

A (Region)B (Product)
NorthApples
SouthOranges
NorthPears
EastApples
NorthBananas

Goal: In cell [E2], when the user types a Region, cell [F2] should show all matching products separated by commas.

Step-by-step:

  1. Set up cells
  • [E1] label “Region”
  • [E2] data validation drop-down sourcing unique regions.
  • [F1] label “Products”
  1. Enter formula in [F2]:
=TEXTJOIN(", ", TRUE, FILTER(B2:B6, A2:A6=E2))
  1. Press Enter. No Ctrl + Shift + Enter is needed in Microsoft 365. The result for “North” becomes:

Apples, Pears, Bananas

Why it works:

  • FILTER screens rows where A2:A6 matches E2.
  • The filtered items from B2:B6 feed into TEXTJOIN, which concatenates them with “, ”.
  • We pass TRUE to ignore blanks in case some regions have empty product names.

Troubleshooting variations:

  • If [E2] is blank, FILTER throws #CALC! because the array is empty. Wrap it:
    =IF(E2="","",TEXTJOIN(", ",TRUE,FILTER(B2:B6,A2:A6=E2)))
  • If your version does not support FILTER, use the legacy array approach noted earlier.
  • Duplicate products: apply UNIQUE inside FILTER if you only want one of each.
    =TEXTJOIN(", ",TRUE,UNIQUE(FILTER(B2:B6,A2:A6=E2)))

Example 2: Real-World Application – Task Staffing Sheet

Scenario: A project manager maintains a table listing employees and the skills they possess. Each employee may appear on multiple rows, one per skill, because it is easier to filter.

A (Employee)B (Skill)C (Billable)
AnnaPower BIYes
AnnaSQLYes
BenExcelYes
BenPythonNo
CaraExcelYes
CaraPowerPointYes
CaraSQLNo
DavePower BIYes

Business need: In the staffing dashboard, the manager wants a single cell for each employee that lists only their billable skills, separated by commas. The sheet has hundreds of rows and updates weekly.

Solution: Use multiple criteria in FILTER by multiplying Boolean arrays (logical AND).

Assume an employee\'s name appears in [G2]. We want the list in [H2].

=TEXTJOIN(", ", TRUE,
          FILTER(B2:B1000,
                 (A2:A1000=G2) * (C2:C1000="Yes")))

Walkthrough:

  1. (A2:A1000=G2) returns TRUE/FALSE for employee match.
  2. (C2:C1000="Yes") returns TRUE/FALSE for billable flag.
  3. Multiplying Boolean arrays works like AND: TRUE*TRUE = 1 (TRUE), anything else 0 (FALSE).
  4. FILTER keeps rows where the result is TRUE.
  5. TEXTJOIN concatenates the remaining skills.

Expected result for “Anna”: Power BI, SQL

Integration: Those comma-delimited skills feed a data-validation list in another sheet so the sales team can quickly see what to pitch.

Performance considerations: As rows climb toward the 50 000 range, FILTER remains responsive. However, if you embed dozens of formulas in a dashboard, recalc time grows. Cache the base data in a single dynamic array and reference that spill to minimise re-evaluation.

Example 3: Advanced Technique – Dynamic Multi-Select and Sorted Output

Edge case: A QA department wants a field where the user can type several defect codes separated by commas (e.g., “A3, B1, D4”), and Excel should return, sorted alphabetically, all part numbers that have ANY of those codes.

Data preview (simplified):

A (Part No)B (Defect Code)
P-100A3
P-101B1
P-102C2
P-100D4
P-103B1
P-104A3

Steps:

  1. Split the user input [E2] \"A3, B1, D4\" into an array:
=TRIM(TEXTSPLIT(E2, ","))

This spills: [\"A3\";\"B1\";\"D4\"]

  1. Build the FILTER that uses an OR relationship. We pass TRUE to BYCOL so we can test each row against the split list:
=FILTER(A2:B1000, BYROW(B2:B1000, LAMBDA(r, SUM(--(TRIM(r)=SplitCodes))>0)))

But that is cumbersome. Microsoft 365 offers XLOOKUP with dynamic arrays:

=LET(
   Codes, TRIM(TEXTSPLIT(E2, ",")),
   Parts, FILTER(A2:A1000, ISNUMBER(MATCH(B2:B1000, Codes,0))),
   Sorted, SORT(UNIQUE(Parts)),
   TEXTJOIN(", ", TRUE, Sorted)
)

Explanation:

  • LET defines Codes and Parts to avoid repeated calculations.
  • MATCH finds rows where the defect code is in our Codes list (OR logic).
  • UNIQUE removes duplicates; SORT alphabetises.
  • TEXTJOIN converts the resulting array into one neat string.

Result: P-100, P-101, P-103, P-104

Professional tips:

  • Even though the formula appears long, LET improves readability and performance.
  • Wrap the final TEXTJOIN with IFERROR to trap empty results when the user enters invalid codes.
  • Replace \", \" with CHAR(10) to create a vertical bulleted list for a PowerPoint-ready export.

Tips and Best Practices

  1. Use LET to name intermediate arrays, improving both speed and maintainability.
  2. Always TRIM user inputs and source columns to eliminate hidden leading/trailing spaces that sabotage matches.
  3. When concatenating numbers, wrap them in TEXT(number,\"0\") to avoid the default “general” format where 41 000 may appear as 4.1E+04.
  4. If many reports share the same set of criteria, spill one FILTER result on a hidden sheet and reference it from multiple TEXTJOIN formulas rather than recalculating over and over.
  5. Consider CHAR(10) + CHAR(13) (Alt+Enter) in your delimiter to produce line-break lists, which copy-paste cleanly to Outlook and Teams.
  6. Document your formulas with comments or the Name Manager so new team members can quickly grasp the logic.

Common Mistakes to Avoid

  1. Mismatched range sizes
    If ReturnRange is [B2:B1000] but CriteriaRange is [A2:A999], FILTER throws #VALUE!. Double-check row counts.

  2. Forgetting to set IgnoreEmpty to TRUE
    Leaving it FALSE allows blank strings into the join, producing ugly \", ,\". The fix: make the second TEXTJOIN argument TRUE.

  3. Not accounting for blanks in LookupValue
    If the user clears the input cell, FILTER errors. Wrap with IF(LEN(Input)=0,\"\",Formula).

  4. Overusing volatile functions like INDIRECT inside FILTER
    INDIRECT recalculates every time anything changes. Replace with structured references or spill ranges.

  5. Confirming an array formula with Enter in legacy Excel
    In Excel 2019 and earlier, failing to press Ctrl + Shift + Enter yields only the first result or #N/A. Always watch for the curly-brace wrapper to verify proper entry.

Alternative Methods

MethodVersions SupportedEase of BuildPerformanceProsCons
FILTER + TEXTJOINMicrosoft 365 / 2021Very easyExcellentShort, intuitive, dynamic arraysNot available in older versions
TEXTJOIN + IF (Ctrl + Shift + Enter)2016-2019ModerateGood up to 20 000 rowsWorks without FILTER functionArray entry quirks, formula harder to read
CONCATENATE Helper Column + PivotTableAllEasyGreat“No-formula” approach, good for reportsManual refresh, extra worksheet clutter
Power Query (Group By)2010+ with add-inModerateExceptional on 1 million rowsHandles massive data, refresh buttonRequires Load/Close cycle, not live formula
VBA User-Defined FunctionAllAdvancedDepends on codeFully customisable delimiter, logicRequires macro-enabled file, security prompts

When to use each:

  • Quick dashboard in Microsoft 365 → FILTER + TEXTJOIN.
  • Legacy workbook for a client on Excel 2013 → Array TEXTJOIN.
  • Data warehouse export of 5 million rows → Power Query or a database solution.
  • Need custom delimiters like “; ” and quotes around items → VBA UDF.

Migration tip: you can start with the legacy array version; once the team upgrades to Microsoft 365, swap FILTER for IF and remove Ctrl + Shift + Enter.

FAQ

When should I use this approach?

Use it whenever you must summarise multiple matching rows into one cell—dashboards, validation lists, conditional text in e-mails, or export strings for other systems.

Can this work across multiple sheets?

Yes. Qualify ranges with sheet names, e.g., FILTER(Sheet1!B:B, Sheet1!A:A=E2). Ensure the ranges remain the same size. Alternatively, wrap multiple FILTER calls inside VSTACK to combine results from various sheets before feeding them into TEXTJOIN.

What are the limitations?

  • FILTER is unavailable in Excel 2019 and earlier.
  • Formulas longer than 32 767 characters will be truncated; huge concatenated lists can hit that ceiling.
  • TEXTJOIN returns text only; numbers lose numeric formatting unless explicitly converted back.

How do I handle errors?

Wrap your entire formula in IFERROR:
=IFERROR(YourFormula,"No matches")
For debugging, use FILTER alone in a spare column to visually inspect what rows are returned before you concatenate them.

Does this work in older Excel versions?

Excel 2016 introduced TEXTJOIN, so anything earlier requires either CONCATENATE helper columns or VBA. FILTER arrived with Microsoft 365, so non-subscription users must use the legacy array formula with IF.

What about performance with large datasets?

For 100 k rows or fewer, dynamic arrays calculate swiftly on modern CPUs. Beyond that, leverage Power Query’s Group By and Text.Combine, or perform the logic in SQL/Power BI. Always avoid volatile functions and minimise repeated range reads with LET.

Conclusion

Being able to pull multiple matches into a single comma-separated list is a deceptively simple but incredibly powerful Excel skill. It condenses complex datasets into digestible nuggets, streamlines report creation, and fuels automation from dashboards to e-mail alerts. Whether you leverage FILTER + TEXTJOIN in Microsoft 365, the legacy array alternative, or scale up with Power Query, you now have a toolbox for any scenario. Keep practising by adapting the techniques to multi-criteria searches, sorted outputs, and dynamic user inputs—you’ll soon find that many other Excel challenges become easier when you can assemble the exact list you need in one cell. Happy analysing!

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