Excel’s built-in data validation list lets you choose one item per cell; it does not provide a native setting for selecting several items in the same cell. In desktop Excel for Microsoft 365 on Windows, you can add multi-select behavior with a VBA worksheet macro, or use a different layout such as one choice per cell.
What Excel’s list validation does
A data validation list is a controlled dropdown for a cell. You define the allowed entries, and Excel lets a user pick one of them. For example, a cell might accept one department: Sales, Support, or Finance. Choosing Support puts that single value in the cell.
It is easy to mistake the dropdown for a multi-select control because the list can contain many options. But the list is a source of permitted values, not a set of checkboxes. Selecting another entry replaces the cell’s current value. There is no built-in checkbox or “allow multiple selections” option in the standard Data Validation dialog.
This distinction matters when designing a workbook. A cell containing “Sales; Finance” is no longer a single list item unless that exact combined string is itself one of the allowed entries. Multi-select behavior therefore needs a workaround, and each workaround affects how the data can be sorted, filtered, summarized, or used in formulas.
Choose an approach before changing the workbook
The best method depends on how people will use the data afterward. A macro can make a dropdown append choices in one cell, but it adds a code and compatibility dependency. Separate columns or rows are less compact, yet are generally easier to analyze and share.
- Use VBA when users need a convenient, compact list in a desktop workbook and macros are permitted.
- Use separate cells when reliable filtering, reporting, or compatibility with Excel for the web is more important than keeping selections in one cell.
- Use a purpose-built form or database when many users need a polished multi-select interface, permissions, or a structured record of each selection.
Consider the people who will open the file, too. Excel for the web does not run VBA macros. A workbook can still open there, but users will not get the macro’s multi-select behavior. Organizational macro policies may also block macros in desktop Excel.
Create the ordinary dropdown first
Before adding a macro, create a standard validation list. Put the choices in a worksheet range, ideally on a separate sheet, and give that range a clear name if the list will be reused. A source range is easier to maintain than typing a long list directly into the validation dialog: changing the source updates the choices without editing every validation rule.
- Select the cell or range where users should make selections.
- On the Windows ribbon, choose Data > Data Validation.
- On the Settings tab, set Allow to List.
- Enter the source range in Source, or select the range containing the options. Enable In-cell dropdown if it is not already selected.
- Choose OK, then test the dropdown in a cell.
For instance, if the source range contains “Red,” “Green,” and “Blue,” ordinary validation puts one color in the destination cell. The macro described below changes what happens when a user picks another color: it appends the new choice instead of replacing the previous one.
Add multi-select behavior with VBA
The following worksheet event macro applies to a single cell at a time. It checks whether the changed cell has list validation, retrieves its previous value using Excel’s Undo command, then combines the previous and newly selected values. It separates selections with a semicolon and avoids adding the same choice twice, ignoring capitalization when it checks for duplicates.
To add it in Excel for Microsoft 365 on Windows, right-click the worksheet tab that contains the dropdown and choose View Code. Paste the code into that worksheet’s code window, not a standard module. Change the dropdown cell’s validation as usual, then save the workbook as an Excel Macro-Enabled Workbook (.xlsm).
Private Sub Worksheet_Change(ByVal Target As Range)
Dim newValue As String
Dim oldValue As String
Dim validationType As Long
Dim eventsWereEnabled As Boolean
Dim parts As Variant
Dim part As Variant
Dim alreadySelected As Boolean
eventsWereEnabled = Application.EnableEvents
On Error GoTo CleanUp
If Target.CountLarge <> 1 Then GoTo CleanUp
validationType = Target.Validation.Type
If validationType <> xlValidateList Then GoTo CleanUp
newValue = CStr(Target.Value2)
Application.EnableEvents = False
Application.Undo
oldValue = CStr(Target.Value2)
If Len(newValue) = 0 Then
Target.ClearContents
ElseIf Len(oldValue) = 0 Then
Target.Value2 = newValue
Else
parts = Split(oldValue, ";")
For Each part In parts
If StrComp(Trim$(CStr(part)), newValue, vbTextCompare) = 0 Then
alreadySelected = True
Exit For
End If
Next part
If alreadySelected Then
Target.Value2 = oldValue
Else
Target.Value2 = oldValue & "; " & newValue
End If
End If
CleanUp:
Application.EnableEvents = eventsWereEnabled
End Sub
In the code block, the HTML characters < and & represent VBA’s less-than sign and concatenation operator. When pasting into the Visual Basic Editor, use the actual characters: < and &. The comparisons check that the cell has list validation; the event handler exits for multi-cell edits and other validation types.
On Windows, Alt+F11 opens the Visual Basic Editor; depending on the keyboard, you may need Fn+Alt+F11. On a Mac, use the Developer tab’s Visual Basic command, or the keyboard shortcut available for your keyboard configuration. VBA support and available editor controls differ by platform, and the macro will not execute in Excel for the web.
Understand the macro’s behavior
The first selection in an empty cell is stored by itself. Later selections are joined with a semicolon and a space, producing a value such as “Red; Green.” Picking Green again does not add another Green. If the user clears the cell, the code preserves that blank instead of restoring the old selection.
The separator is a design choice. This example uses a semicolon, so avoid semicolons inside individual list options; otherwise the macro cannot reliably tell a choice apart from the separator when checking duplicates. If your choices contain semicolons, choose another separator that does not appear in any option and update both occurrences in the code.
This version does not toggle a choice off when it is selected a second time. It simply prevents the duplicate. To remove one item, edit the cell contents directly, or use a different macro designed to remove selections. Also, because the code uses Application.Undo, it changes Excel’s normal undo behavior for that selection. Keep a backup before introducing event code.
Limitations and data-quality trade-offs
Combining several choices into one cell is convenient to read, but it turns structured data into a text string. Excel sees “Red; Green” as one cell value, not as two independent records. A normal filter for Red may not match the combined value as expected, and counting occurrences or grouping records can require extra text-processing steps.
Validation also is not a security boundary. A user can paste or type content that bypasses the dropdown, and a macro may be disabled. The code handles ordinary single-cell dropdown changes; it deliberately ignores multi-cell edits such as pasting into several cells at once. If your workbook relies on consistent data, explain the selection process and check the resulting entries before using them in reports.
For a workbook shared with people using different platforms, weigh the convenience against the dependency on desktop VBA. Excel for the web can display the workbook, but it does not run this worksheet event macro. On a Mac, VBA is available in desktop Excel, but editor access, security prompts, and keyboard shortcuts can differ. Test the actual workbook in the environments your users need.
Alternatives that keep selections easier to analyze
When analysis matters, a more normalized layout is often better than storing multiple values in one cell. For example, put each project in a row and provide columns for Choice 1, Choice 2, and Choice 3, each with its own validation list. This is simple to filter, although it sets a maximum number of choices and creates empty cells when fewer choices are made.
Another option is a separate table with one row per selection: one column for the person or record ID and another for the chosen item. A record with three choices then has three rows. This format is typically easier to count, filter, and summarize with PivotTables because each choice is stored as its own value.
For a small fixed set of choices, individual Yes/No columns or checkboxes may be clearer than a dropdown. For example, columns named Red, Green, and Blue can record whether each color applies. This takes more horizontal space, but each option has a dedicated field. Choose based on the reports and workflows the data must support, not only on how compact the entry cell looks.
Common problems and checks
- Another choice replaces the first: Confirm the code is in the worksheet module for the sheet containing the dropdown, macros are enabled, and the file is saved as
.xlsm. - The code does nothing in a browser: Excel for the web does not run VBA. Use desktop Excel or a non-macro layout.
- Entries repeat: Check that the separator in the code is not part of an option and that users are selecting list entries rather than entering differently spaced text manually.
- Some edits are ignored: This handler skips changes affecting multiple cells. Make selections one cell at a time.
- The macro is blocked: Follow your organization’s macro policy rather than lowering security settings indiscriminately. Ask an administrator if the workbook is intended for managed use.
When troubleshooting, test on a copy with a short list and a single destination cell. That makes it easier to distinguish a validation-source problem from a macro, file-format, or permissions issue.
Frequently Asked Questions
Can Excel data validation select multiple items by default?
No. A standard list validation dropdown writes one selected item into a cell. Multi-select requires a workaround, such as VBA, or a layout that stores choices in separate cells or rows.
Can I select multiple items in one cell without VBA?
Not with Excel’s built-in data validation dropdown. You can enter a combined value manually or design the workbook with separate fields, but the native dropdown itself does not append selections.
Does the VBA multi-select dropdown work in Excel for the web?
No. Excel for the web does not execute VBA event macros. The workbook can still be opened, but users need desktop Excel with macros enabled for this behavior.
Can I remove an item by selecting it again?
Not with the sample macro. It prevents duplicates, so choosing an existing item leaves the cell unchanged. Remove an item by editing the cell, or use a purpose-built toggle macro.
Will the combined choices work normally with filters?
They are stored as one text value. Filtering can sometimes find text within a cell, but each choice is not a separate field. For dependable reporting, store each selection in its own column or row.
Should I save a copy before adding the macro?
Yes. Save a backup before adding or running VBA. Excel’s Undo command cannot reverse a macro’s changes with Ctrl+Z, and the sample uses Undo internally to retrieve the prior cell value.
Related
- Remove a Dropdown List in Excel Without Losing Data
- Excel Redo Shortcut: How to Restore an Undone Action
- Protect Excel Sheets in Teams: What It Does and How
Try it: the Date Difference Calculator: days, months, years and weekdays between two dates, with the DATEDIF formulas.
More in How-to basics
- Share a Calendar in Outlook: Steps and PermissionsTo share a calendar in Outlook, open Calendar, choose the calendar you want to share, select Share or…
- Average in Excel: How to Calculate ItTo calculate an average in Excel, enter =AVERAGE(A2:A6) in an empty cell, replacing A2:A6 with the range that…
- Change to Light View in Outlook: Steps for Every VersionTo change Outlook to a light view, open its appearance or theme settings and choose Light, or turn…
- Google Sheets Dropdown Based on Another Cell: How It WorksYes. In Google Sheets, you can make one dropdown list depend on the value in another cell by…
- Calculate Percentage in Google Sheets: Formulas & TipsTo calculate a percentage in Google Sheets, divide the part by the total, then format the result as…
- Google Sheets: Count Checked Checkboxes with COUNTIFTo count checked checkboxes in Google Sheets, use =COUNTIF(B2:B20,TRUE), replacing B2:B20 with the cells that contain your checkboxes.…
Sources: Function behaviour and menu paths: Microsoft Support documentation for Excel. Method & sources
Spotted an error in this guide? Let us know.