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,
    Great information! Worked perfectly! I had another question that I see a few other readers had asked related to multiple selects but I did not see an answer. Maybe it is not possible to do.
    For example, if column A has the following cells:
    A1: header
    A2: apple, orange, grape
    A3: orange, apple
    A4: grape
    Is there some way to set the filter options to each item (e.g. apple or orange or grape) and not the string of items (e.g. apple, orange, grape or orange, apple or grape)? So if I want to filter and show only “orange”, I will get A2 and A3. If I filter to show only “grape”, I will get A2 and A4.
    Right now the auto filter shows the following options:
    “apple, orange, grape”
    “orange, apple”
    “grape”
    Is this possible?
    Thank you!
    Bonnie

    1. @Bonnie, in Excel 2010 and later, if you start typing in the Filter’s Search box, the list will be automatically filtered to show only the rows that contain the text you typed.

  2. Hello – I am wondering if there is any way to use the multi select VB code to enable the user to select multiple items from the drop down list using the CTRL key? I added this mutli select capability to a worksheet and my boss is disappointed that users can’t select multiple items at once using CTRL.

  3. This has been very helpful, but I really need to just have the multiple selection separated by commas in just one cell, not a whole column. I used the code for “SameCellAddRemove” and it was working great until I realized it was affecting all the other cells in a column that can’t have the comma thing happening to it every time I type in them

    1. This is what I currently have in my spreadsheet that I need to now refer to Columns 6 & 8 AND only Row 2!
      Option Explicit
      ‘ Developed by Contextures Inc.
      http://www.contextures.com
      Private Sub Worksheet_Change(ByVal Target As Range)
      Dim rngDV As Range
      Dim oldVal As String
      Dim newVal As String
      Dim lUsed As Long
      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 Intersect(Target, rngDV) Is Nothing Then
      ‘do nothing
      Else
      Application.EnableEvents = False
      newVal = Target.Value
      Application.Undo
      oldVal = Target.Value
      Target.Value = newVal
      Target.Value = newVal
      Select Case Target.Column
      Case 6, 8
      If oldVal = “” Then
      ‘do nothing
      Else
      If newVal = “” Then
      ‘do nothing
      Else
      lUsed = InStr(1, oldVal, newVal)
      If lUsed > 0 Then
      If Right(oldVal, Len(newVal)) = newVal Then
      Target.Value = Left(oldVal, Len(oldVal) – Len(newVal) – 2)
      Else
      Target.Value = Replace(oldVal, newVal & “, “, “”)
      End If
      Else
      Target.Value = oldVal _
      & “, ” & newVal
      End If
      End If
      End If
      Case Else
      ‘do nothing
      End Select
      End If
      exitHandler:
      Application.EnableEvents = True
      End Sub

  4. This does not work for me at all. I have the code entered exactly, but can still only select a single item. Help! (I’m on a MAC)

  5. Debra,
    I’m Using SameCell VB and just wondered of I could have my data validation list on another worksheet to keep my lists clean and away from the main grid. Is that possible?

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.