Select Multiple Items from Excel Data Validation List

Select Multiple Items from Excel Data Validation List

You’ve probably used an Excel data validation drop down list, where you can click the arrow, and select an item to fill the cell. With a bit of programming, you can customize a drop down list, to select multiple items.

Single Selection Drop Down

By default, data validation drop downs only allow you to select one item.

In the worksheet shown below, you can select a month from the drop down, and it overwrites any previous selection in that cell.

Data Validation Drop Down

Select Multiple Items From the Drop Down List

Instead of limiting users to a single selection, you can use a bit of programming, combined with the data validation list, and allow multiple selections.

You can display all the selected items across a row, or down a column, or keep them in the same cell.
Keep reading, to see some examples of this technique, and how it works.

There is also a video that shows the multiple selection drop down list. To try it for yourself, follow the download link f

Watch the Data Validation Video

To see these techniques, and a few other multiple selection examples, you can watch this short video.

_________________

336 thoughts on “Select Multiple Items from Excel Data Validation List”

  1. Hi Debra,
    Thank you for the code – very handy.
    I made a small adjustment that keeps the macro from adding in the selection if it has already previously been selected, I hope you might find it useful:
    Application.EnableEvents = False
    commaChk = “,”
    newVal = Target.Value
    Application.Undo
    oldVal = Target.Value
    Target.Value = newVal
    If oldVal “” Then
    If newVal “” Then
    If InStr(1, oldVal, newVal) = 0 Then
    Target.Value = oldVal & “, ” & newVal
    End If
    If InStr(1, oldVal, newVal) > 0 Then
    Target.Value = oldVal
    End If
    If Len(oldVal) + 1 > Len(Target.Value) Then Target.Value = oldVal
    End If
    End If

  2. I worked around your code, which worked nicely, to enable modification (add, remove) of items in the list.
    I removed some lines. Works as long as items do not contains “, “.

    Private Sub Worksheet_Activate()
    Application.EnableEvents = True
    End Sub
    ' Developed by Contextures Inc.
    ' www.contextures.com
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rngDV As Range
    Dim oldVal As String
    Dim newVal As String
    If Target.Count > 1 Then GoTo exitHandler
    On Error Resume Next
    Set rngDV = Cells.SpecialCells(xlCellTypeAllValidation)
    On Error GoTo exitHandler
    If rngDV Is Nothing Then GoTo exitHandler
    If Not Intersect(Target, rngDV) Is Nothing Then
    Application.EnableEvents = False
    If Target.Column = 1 Or Target.Column = 2 Or Target.Column = 3 Then
    newVal = Target.Value
    Application.Undo
    oldVal = Target.Value
    Target.Value = newVal
    If newVal "" Then 'If new value isn't empty
    If InStr(1, oldVal, newVal) > 0 Then 'If string is found in current value
    If InStr(1, oldVal, newVal) = 1 Then 'If string is found at the beginning
    If InStrRev(newVal, ", ") = 0 Then
    Target.Value = oldVal 'Means user tried to add string that was already in current string
    Else
    Target.Value = newVal 'Means user deleted part of the string
    End If
    Else
    Target.Value = oldVal 'Means user tried to add string that was already in current string
    End If
    Else
    If oldVal = "" Then
    Target.Value = newVal 'Means field was empty before update
    Else
    Target.Value = oldVal & ", " & newVal 'We append new value to the old string
    End If
    End If
    Else
    Target.Value = "" 'Means user cleared the field or didn't add item
    End If
    End If
    End If
    exitHandler:
    Application.EnableEvents = True
    End Sub

  3. I like the general abilities in this code but was wondering if the code to place the selected values in the next open cell could be changed so that I can remove a previously selected item from wherever it was placed. Similar to the idea of removing from the comma delimited string.
    Thanks for your help.

  4. Hello,
    Not sure if this has been already asked, but I am trying to use a drop down list in Excel 2007 and I do not want it to remove items once they have been selected. For instance, for a transaction log, I want to have the user type in a description of a purchase, and in the column next to it choose from a list of categories this purchase falls into (such as food, or clothes). But then on the next transaction line, if the category item has already been selected once, I cannot select it again in the creel just below (say if there were multiple food or clothing purchases). Is there a way to allow the user to use the list item repeatedly from the drop down boxes in the same column?

  5. Debra,
    I just wanted to take the time to thank you. This information was very useful.
    Even reading the posts and replies from everyone was a great help as well.
    After finishing a project for building a time management sheet for business travelers, I can hardly believe how well it works.
    Trent

  6. Hi,
    Can u tell me; i want to show validation list matching word by typing some letter, then i select right one.
    because if drop list so much then time is wast to scroll down…
    Thank You

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.