Set up dependent drop-down list for multiple rows in Excel

On the web, there are many questions about how to create an expandable drop-down list that can be copied across multiple rows and very few answers. Here's a working solution.

The introduction of dynamic arrays has made our lives as Excel users a lot easier. Among many other things, they significantly simplify the creation of dynamic drop down lists. The above-linked tutorial shows how to quickly set up a multiple drop-down with dynamic arrays and make it expandable to automatically include new entries.

I felt very proud of the work we'd done until we got a few comments like this: "That works great for one row, but how to get this to work for the entire column?" A fair question. Indeed, Excel picklists are most often used in worksheets with hundreds of rows to facilitate data entry. So, we reconsidered the whole approach, worked out a formula that automatically adjusts for each row, and I'm thrilled to share this new solution with you!

Important note! Because this solution relies on the dynamic array feature, it is only applicable in Excel for Microsoft 365 and Excel 2021. In pre-dynamic versions of Excel, please use the traditional approach to creating multiple dependent drop down lists.

Source data

For starters, let's get some source data to work on. In our main table on the left, we want to have two picklists in each row, so that selecting a Dept. in the first list only displays Managers for that selected department in the second list. If you change the selection in the main list, the names in the dependent drop-down will update accordingly. Source data for multiple dropdown lists

Step 1. Structure source data

The source data for drop-down lists often come from different sources and are organized differently. So, our first step is to structure the original data according to our needs. For this, we are going to create some sort of preparation table that will list all different department names in the header row, and under each dept. name there will be a list of employees working in that specific department. To automate the work and prevent human errors, we will be using the following formulas.

To get the departments, enter this formula in H2.

=TRANSPOSE(SORT(UNIQUE(E3:E15)))

Here, the UNIQUE function extracts all the different departments from E3:E15. The SORT function arranges the results in alphabetical order so that the items of your main list will be sorted from A to Z (if you don't want that, you can remove SORT from the formula, and the dept. names will appear in the same order as in your source table). Finally, TRANSPOSE changes the output orientation from vertical to horizontal.

Please notice that the formula needs to be entered just in one cell, and the results spill into neighboring cells automatically (this feature is called a spill range).

This way, we've got the items for our main drop-down list: Getting the items for the main drop-down list

To pull the manager names, the formula in H3 is:

=SORT(FILTER($F$3:$F$15, $E$3:$E$15=H$2))

Here, we utilize the FILTER function to filter the employees that belong to a particular department ($E$3:$E$15=H$2). The SORT function arranges the names in alphabetical order (if you wish to preserve the existing order, remove it from the formula).

Like the previous formula, this one is also dynamic, and the whole spill rage is filled with the results at once. All you need to do is to drag the formula to the right to get a list of managers for each dept.

And this gives us the items for the dependent drop-down list: Getting the data for the dependent drop-down list

Tips and notes:

  • In this example, we have all the data on the same sheet to make things easier for you to follow. In your real spreadsheets, you'd better place a preparation table on a separate sheet to make sure there are enough empty cells down and to the right to accommodate all the data. As already mentioned, dynamic arrays formulas are entered only in one cell, and you cannot know how many cells the results will spill into.
  • If your goal is to make expandable drop-down lists, then use a slightly different method for the preparation table, which is discussed in this example.

Step 2. Make a primary drop-down list

With the source data properly arranged, create the first drop-down list in the usual way with the help of Excel Data Validation:

  1. Select the topmost cell in which you want the primary dropdown list to appear (B3 in our case).
  2. On the Data tab, in the Data Tools group, click Data Validation.
  3. On the Settings tab of the Data Validation dialog box, configure the rule:
    • Under Allow, select List.
    • In the Source box, enter the spill range reference pointing to the departments names in the preparation table: =$H$2#

      This syntax (cell address followed by a hash tag) refers to the entire spill range no matter how many cells it actually contains.

    • Click OK to close the dialog. Making a primary drop-down list

The primary drop-down list for the first cell is done: Primary drop-down list

Step 3. Create a dependent drop-down list

Technically, setting up a successive picklist seems pretty easy - you just need to create one more data validation rule for another column. However, there's a tricky part - the formula for the Source box. This time, you cannot use a normal spill range reference because the second drop-down list needs to take into account the selection in the first drop-down. To solve this need, we'll be referring to a relevant spill range indirectly with this formula:

INDIRECT(ADDRESS(row_num, COLUMN(preceding_col) + MATCH(dropdown_cell, dropdown_spill_range, 0), 4) & "#")

Where:

  • row_num - the number of the row in the preparation table in which the formula returning the items for the dependent dropdown resides. Our formula is in row 3 (H3:K3), so it's 3. Instead of hardcoding the row number, you can use the ROW() function, but we won't complicate things more than they already are.
  • preceding_col - a cell reference to the column preceding the leftmost column of the preparation table. In this example, the preparation table begins in H2. The preceding column is G, so we use COLUMN(G1). Here, only the column coordinate matters, the row number can be any.
  • dropdown_cell - is the address of the topmost cell containing the primary drop down list, B3 in our case. Please be sure to use a relative cell reference without the $ sign, so that the formula adjusts correctly for each row where you'll copy your drop-down.
  • dropdown_spill_range - the reference to the spill range in the preparation table containing the items for the primary drop down list. In our example, it's the departments returned by the dynamic array formula in H2, so we use this spill range reference: $H$2#

Putting all the above pieces together, we get the following formula for the dependent drop down validation rule:

=INDIRECT(ADDRESS(3, COLUMN(G1) + MATCH(B3, $H$2#, 0), 4) & "#")

Now, simply select the topmost cell for the secondary drop-down list (C3), go to the Data tab > Data Validation, and configure the rule like this: Setting up Data Validation for the dependent drop-down list

That's it! The dependent drop-down list is good to go: The dependent drop-down list in Excel

Tip. If your source data and the preparation table are on another sheet, then include the sheet name in the lookup_array argument of MATCH, and also concatenate it with the cell reference within INDIRECT like this:

=INDIRECT("Sheet1!"&ADDRESS(3, COLUMN(G1) + MATCH(B3, Sheet1!$H$2#, 0), 4) & "#")

In the above formula, simply replace Sheet1! with the name of the worksheet where your source data and the preparation table are kept.

How this formula works:

From my experience, many of our blog visitors are eager to know not only how to apply this or that formula but also understand its internal logic. For such curious and thoughtful users, I'm providing the detailed break-down of the formula:

=INDIRECT(ADDRESS(3, COLUMN(G1) + MATCH(B3, $H$2#, 0), 4) & "#")

On a high level, we utilize the INDIRECT function to "dynamically" refer to the spill range of managers corresponding to the department selected in the primary dropdown.

Suppose you picked Planning from the drop-down in B3. The employees of the Planning dept. are listed in column J beginning in J3. That means, we need to somehow supply the J3# reference to INDIRECT, and here's how we do it:

To get the column letter, the following 3 functions are used together:

ADDRESS(3, COLUMN(G1) + MATCH(B3, $H$2#, 0), 4)

The COLUMN function returns the column number of G1, which is 7.

The MATCH function searches for the B3 value in list of departments beginning in H2 and return its relative position, which is 3 (Analysis, Design, Planning, …).

Adding up these two numbers gives us 10, so the ADDRESS function takes this form:

ADDRESS(3, 10, 4)

Where 3 is the row number, 10 is the column number and 4 is the relative cell reference type. The result is the "J3" reference that goes directly to INDIRECT :) and reduces our tricky formula to an easy understandable one:

INDIRECT("J3"&"#")

Concatenating a cell reference with a hash tag produces a spill range reference, so that INDIRECT returns an entire array rather than a single cell value. Done!

The beauty of this formula is that it works perfectly for a single-letter, two-letter and even tree-letter column (thank you Jonathan for pointing us in the right direction!).

Step 4. Copy drop down lists across multiple rows

This is the easiest part. For the picklists to appear in multiple cells, you can simply copy them like any other cell content by using the Copy / Paste feature or by dragging through the adjacent cells. For practice, we will try both techniques.

To copy the primary drop down list, select the cell containing it (B3) and drag the fill handle (a small square at the lower right-hand corner of the cell) through as many cells as needed: Drag the primary drop down across multiple cells

To copy the dependent drop down list, let's do a regular copy/pasting:

  1. Select the cell with the secondary drop-down (C3) and press Ctrl + C to copy it.
  2. Select all other cells where you want the dependent list to appear (C4:C12) and press Ctrl + V to paste the copied contents.
Copy the dependent drop down across multiple rows

Now, both picklists appear in every row letting you select a department and manager for each project.

Please keep in mind that the above methods copy all the contents of a cell including Data Validation and the current selection. So, they are best to be used when no item has been selected in the list yet.

If you've already selected the items, then you can use the Paste Special feature to copy the Data Validation rule.

Result: multiple rows dependent drop down list

Though our dynamic arrays solution is not a one-click setup, it's a way faster than it looks and definitely much faster than the old-fashioned approach with named ranges. Anyway, the result is worth the effort, agree?

Here it is - a multi-level drop down for multiple rows where selecting an item from the first list determines which items will appear in a secondary drop-down. Dependent drop down list for multiple rows

How to make multiple drop-down list expandable

If more data is likely to be added to your source table in the future and you wish to have new entries included in the drop-down lists automatically, then you will have to use a bit more complex versions of the formulas for the preparation table. There are 2 possible approaches here, a regular range and a full-fledged Excel table, each having its own caveats.

Approach 1. Organize source data in a table

One of the key advantages of Excel tables is automatic expansion to accommodate new data, and we are going to leverage this ability.

The first thing you do is convert source data to a table. The quickest way is to select the range E2:F15 and press Ctrl + T. For convenience, we name the table Source_data.

Next, build the formulas for the preparation table by using structured references. If you are not familiar with this syntax, it's not a problem! Just start typing a formula in a cell, select the required range in your table, and Excel will create an appropriate structured reference for you automatically based on the column names.

To extract the departments, the formula in H2 is:

=TRANSPOSE(SORT(UNIQUE(Source_data[Dept.])))

To get the manager names, enter the below formula in H3 and drag it to the right through a few more cells than there currently departments (say, through P3):

=IFERROR(SORT(FILTER(Source_data[[Manager]:[Manager]], (Source_data[[Dept.]:[Dept.]]=H$2))),"")

Play pay attention that absolute structured references should be used for the Dept. and Manager columns so the references won't shift when the formula is copied horizontally. The default in Excel tables is a relative column reference such as table[column]. To make the reference absolute, you need to repeat the column name like this: table[[column]:[column]].

The IFERROR function is used to prevent errors when the formula is copied to extra columns to the right.

If all done correctly, the preparation table expands automatically to incorporate new records: Making a preparation table expandable

Approach 2. Use a range but improve formulas

If the table references look too complex to you, you can do with a normal range too. In this case, a couple of improvements need to be made to the formulas:

  • Include some empty rows in the ranges supplied to both formulas.
  • Filter out blank cells so they won't get into your picklists.

To extract the department names, the formula in H2 is:

=TRANSPOSE(SORT(UNIQUE(FILTER(E3:E30, E3:E30<>""))))

Please pay attention that we use the range E3:E30, though currently there are far fewer records in our source table.

To get the manager names, enter the below formula in H3 and drag it through a few more columns than there are currently entries in the header row:

=IFERROR(SORT(FILTER($F$3:$F$30, ($E$3:$E$30=H$2)*($E$3:$E$30<>""))),"")

In this case, we lock the range references with the $ sign to prevent them from changing while copying the formula.

As with the previous solution, the new records appear in the preparation table once they are added to the source table. Making a multiple drop-down list expandable

Result: expandable multiple drop-down list

Whichever approach you opted for, configure and copy two Data Validation rules like explained in Steps 2 - 4 above, and the newly added items will be displayed in the drop-down lists without any extra effort on your side! Expandable multiple drop-down list in Excel

That is my go-to for making a multi-level dropdown for every row in Excel. Hopefully, this solution will be useful for you too. Anyway, I thank you for reading and hope to see you on our blog next week!

Practice workbook for download

Multiple rows dependent drop-down (.xlsx file)

122 comments

  1. Thanks for this helpful information.

    Please guide for 4 level drop down for multiple rows. Its very important.

  2. Thank you for very useful tutorial, it helped me to create dependent drop-down menus for 2 columns. Would it be possible to get advice how to create dependent on each other drop-down menus for 4 columns with multiple rows please.

  3. Hi,

    The reference towards another sheet is not working for me.
    INDIRECT(ADDRESS(120,COLUMN($A$119)+MATCH(H106,$B$119#,0),4)&"#")
    INDIRECT("Department effort'!"&ADDRESS(120, COLUMN($A$119) + MATCH(E7, 'Department effort'!B119#, 0), 4) & "#")

    • Hi,

      I`ve fixed the issue by adding additional ' ' marks in between " "
      =INDIRECT(" ' Department effort ' ! " &ADDRESS(120, COLUMN($A$119) + MATCH(E7, 'Department effort'!B119#, 0), 4) & "#")

      Many thanks again for this solution, helped a great deal

  4. Hello, thanks a lot for this article, this solution works great! I had a question regarding using the COLUMN function though, when doing the data validation formula for the dependent drop down list, is it really necessary to use COLUMN? If we only need the column number of the preceding column of the preparation table, and the row doesn't matter, doesn't that always give us the same column number?

    The reason why I'm asking this is because when a user deletes a previous row, it breaks the dependent drop down list for the rest of the sheet following the deleted row, because COLUMN will get a REF error. But if I replace the COLUMN function with the actual number of the column, it seems the formula for the dependent drop down still works, and it also won't break anymore when a row gets deleted. Is that right or am I missing something?

    Basically in your example above, is
    =INDIRECT(ADDRESS(3, COLUMN(G1) + MATCH(B3, $H$2#, 0), 4) & "#")
    the same as
    =INDIRECT(ADDRESS(3, 7 + MATCH(B3, $H$2#, 0), 4) & "#")
    ?

    Thank you!

    • Hi! The INDIRECT(ADDRESS(3,7)) formula always refers to cell G3. But if you delete columns or rows, the contents of this cell will change.

      • Hi Alexander,

        Sorry for my late reply, my comment disappeared the next day and I thought it was removed for some reason. Just noticed it reappeared and I'm back to say thanks! In my case the preparation table will not get any changes on the left side and it's in a separate tab so deleted rows from the main tab with the drop downs will not affect the preparation table, so I think I can just use the number of the column. So far so good at least.

  5. Problem: dropdown returns from col AV instead of B

    Hi, I have used this formula in another worksheet and it's great. In another document, my prep table runs from columns B-BA. The first dropdown returns correctly a list of all my first category (company). The dependent dropdown (products) is returning, but it's not matching the "parent" dropdown correctly. Instead, it's returning the products for the wrong company. I am happy to email the document if that helps.

    • Unfortunately, I can't help you here as we don't provide such services on this blog. Check if you have done everything correctly according to the instructions in the article above.

  6. Hi there,
    i am trying to make ordering for my workplace a little easier.

    I work in a kitchen.
    I have the menu name and ingredients listed already.
    I have created a drop down box to include the menu item name.

    What i need is for when i select the menu item, for all the ingredients to populate. I have tried VLOOKUP, however this only displays the first ingredient item. i have tried to copy the formula and change the cells to suit, but it still doesn't work.

    Please help!! i have a long road ahead of me loading up all my recipes, but im stuck at the start!!

    Thank you for any help you can give.

  7. I am trying to make a simple drop down list that displays minutes and Time off in decimal format. Example, 15 minutes = 0.25.
    If someone says, my agent has 2.87 hours available to use for time off, what would that correlate to in exact minutes?
    How can I make a drop down list for them to select the number of minutes they need and it display the decimal amount? I hope that makes sense. Thanks for your help!

    Minutes Kronos PTO Balance
    1 0.02
    2 0.03
    3 0.05
    4 0.07
    5 0.08
    6 0.10
    7 0.12
    8 0.13
    9 0.15
    10 0.17
    11 0.18
    12 0.20

    • The minutes and kronos pto balance should be separated above. 1-12 (Minutes) is is under the Minutes column and 0.02 - 0.20 should be under the kronos pto balance column. Bunched them together when I posted it. I just need an easy way to convert decimal minutes to actual minutes.

  8. How can I replicate this same example, for a 3-level drop-down dependent list?

    • @DLP, did you find a way to do this? I too am interested a 3-level drop-down dependent list that can be copied across multiple rows.

  9. hiya,
    i am trying to make the information change when the drop bar is chosen e.g Sam sold 10 items altogether but ive made a drop down that says chocolate and he has sold 7 how can i make it that when I've chosen chocolate the information changes to show if that makes sense

  10. Hi- Im trying to create an excel document with drop down list but not sure if this is possible. I have a list of addresses belonging to care facilities organized with a state as the header and a list of insurance payors also organized with a state as the header. Here is what I am looking for to allow the user for ease of entry:

    - User would in column 1 row 1 drop down and a list of states that are available are is displayed
    - User would then select the care facilities (column 2 row 1), but only the care facilities that are under state header are shown.
    - User would then select insurance payor (column 3 row 1), but only the insurance payors that are under state header are shown.

    So the drop down selected in the first column, controls what is shown in column 2 and 3.

    -

  11. I have over 70 cells that need to have that type of function. What would the code look like?

  12. Thank you so much! This worked perfectly. I had been struggling with this for some time. I wish I had found your page sooner.

  13. Is there any way to habe a drop down list in say cell a1. then each time u click on one of the names in the drop down list row b1 to say h1 comes up with different values. For example i'm measuring breads. so in a1 is the drop down list and each time i click on a certain type of bread the row from B to H show different values.

  14. Hello, there is a problem on the Excel online version. Take your sample file and delete some of the Dept. then the manager dropdown disappears and doesn't work after you select a Dept.

    Any fixes for this?

  15. Excellent tutorial, works wonderfully!

  16. Hey guys, great tutorial! But I'm still having some problems:

    1- I've tried replicating this formula referencing values in another sheet. In the end, I came up with the following:

    '=INDIRECT(Source!ADDRESS(4, COLUMN(D1) + MATCH(F6, Source!$E$3#, 0), 4) & "#")

    The sheet where the values are located is called "Source", the value of the 'Dept.' is located at E3:M3 ($E$3#), and the value of the 'Manager' is right underneath each 'Dept' cell. That's all good. But every time I try to add this formula (above) to a Data Validation list in another sheet, and reference it to the drop-down value of the cell F6, I get an error message telling me that this formula will result in an error.

    2- With the constant errors regarding my formula, I tried just editing and messing around with the file provided and, for some reason, the formula that you guys are using WORKS, but if I go to 'Data Validation > List > Open up that same formula [=INDIRECT(ADDRESS(3, COLUMN(G9) + MATCH(B11, $H$2#, 0), 4) & "#")] and try to save it, Excel gives me the same error as before... So no matter if I try to use this on a different sheet, if I try to use the file provided here, or if I recreate exactly the same file using the formulas provided, step by step... I still get an error.

    Any possible fixes?

    • Hello!
      Formula p.1 - I can't check the formula that contains unique references to your workbook worksheets, sorry.
      Formula p.2 - Couldn't reproduce your issue. These formulas are working fine for me.

      • The argument to the INDIRECT call has to be a text. Encase the worksheet name in quotation marks and concatenate with the ADDRESS function.

  17. Thank you very much for the wonderful magic help! I really appreciate your contribution!!!

    It works like amazing!!!

  18. i am getting this formula results in error

    =INDIRECT("Dropdown reference"&ADDRESS(2, COLUMN(D1) + MATCH(I4, 'Dropdown reference'!$E$2#, 0), 4) & "#")

    • im pretty sure I understand how the formula works from a high level as i got the first two steps to work even with them on a different table but i cannot get the dependent dropdown one to work

    • I had this same problem and I also had a space in the worksheet name that I was referencing. When I renamed the worksheet to remove the space and adjusted the formula to match, it eliminated the error.

    • In my version I had to have " and ' to get it to work in another tab.
      =INDIRECT("'ART CAT'!"&ADDRESS(3, COLUMN(L1) + MATCH(D5, 'ART CAT'!$M$2#, 0), 4) & "#")

  19. Thank you very much. This helped a lot.

  20. I'm able to get the formula provided to work well, however, I am receiving an error "#SPILL" midway through my data that is equivalent of the Manager names in the example provided. My "Departments" populate correctly in columns B:Q, and my "Managers" populate below in all the columns except N. This is where the SPILL error is. Thoughts?

  21. What if I wanted to go one more deep with Dept, Manager, Room? How would I get Room from Dept & Manager, especially if there are hundreds of rooms in the building? Would I have to make a dynamic list for each Dept & Manager combination? Would it be time to switch to VBA at this point?

  22. I can not seem to implement this formula to an Excel online file even after diagnosing all errors. Although, it did work when I downloaded the file and edited it with desktop Excel. Does anybody encounter the same problem? Is there a solution to this?

    PS: The error occurs only in the data validation formula bar. It works just fine in a regular cell.

  23. Hi,

    I am trying to make 4 simple drop downs into a drop down tree dependant on the previous drop down and also works across multiple rows.

    I.e. Site - Department - Area - Machine

    Can anyone help?

    Thanks

  24. I can't get step 2 to work. The spill range =$H$2# entered in the data validation box is looking for a vertical spill range, not the horizontal one. How do I get it to look horizontally for the list?

  25. Fantastic solution! Exactly what I was looking for. Many thanks for sharing it. Cheers,

  26. This is what I was looking for. I made a few changes so that each row's second drop-down draws from a spilled array on the same row. Essentially the same as the above solution, but it works for multiple dynamic validations of varying sizes.

  27. I am struggling with this formula once I modify it to use a Preparation Table on a different tab.

    I am using your example document and am getting the same errors as with my own data.
    - To test the formula using a Prep Table, I copied the "Source Data" and "Preparation Table" data to a new sheet called "DATASET" and made sure "Source Data" started in Column E.

    Your original formula: =INDIRECT(ADDRESS(3, COLUMN(G1) + MATCH(B3, $H$2#, 0), 4) & "#")

    Your recommended change to use the Prep Table on a different tab:
    =INDIRECT("Sheet1!"&ADDRESS(3, COLUMN(G1) + MATCH(B3, Sheet1!$H$2#, 0), 4) & "#")

    Modified to use a Prep Table on another sheet called "DATASET":
    =INDIRECT("DATASET!"&ADDRESS(3, COLUMN(G1) + MATCH(B3, DATASET!$H$2#, 0), 4) & "#")

    This reports back: 0

    Any idea why this is not working as expected?

    • It took some time, but eventually I fully understood how the formula is working which helped me get the variables corrected. The instructions detailed are accurate, I just had to get my brain wrapped around it all.

      Any advice on if I have three columns of source data??? :)

  28. Mark Seely says:
    March 6, 2021 at 1:27 am

    Hi Alexander,

    The article you reference is one that shows how to do multiple dependant drop downs for one row, and this article shows you how to create one dependant drop down for multiple rows. Now, how do create multiple dependant drop downs for multiple rows?

    I have the same problem is there a solution. I need to create multiple dependent drop down lists for multiple rows - possible surely.

    Exellent articles btw.

    Regards,

    Ivor

  29. Hi!

    Great tutorial! I am now trying to add another dependent column to this. Any suggestions on how to proceed?

    Thanks!

  30. hi guys, thank you very much for this, hoping you can help me to expand on the concept please?

    what i'm looking for is multiple dependent drop downs with a look up (i'll comma separate here just to show values):

    region, tower, practice, role, rate
    au, tower1, practice1, senior role, $100
    au, tower1, practice1, mid role $75
    au, tower1, practice1, role $60

    au, tower1, practice2, senior role, $100
    au, tower1, practice2, mid role $75
    au, tower1, practice2, role $60

    au, tower2, practice1, senior role, $100
    au, tower2, practice1, mid role $75
    au, tower1, practice1, role $60

    au, tower2, practice2, senior role, $100
    au, tower2, practice2, mid role $75
    au, tower2, practice2, role $60

    us, tower1, practice1, senior role, $100
    us, tower1, practice1, mid role $75
    us, tower1, practice1, role $60

    us, tower1, practice2, senior role, $100
    us, tower1, practice2, mid role $75
    us, tower1, practice2, role $60

    us, tower2, practice1, senior role, $100
    us, tower2, practice1, mid role $75
    us, tower1, practice1, role $60

    us, tower2, practice2, senior role, $100
    us, tower2, practice2, mid role $75
    us, tower2, practice2, role $60

    thanks in advance!

  31. Yeah my explanation of adding a none in the second drop down, obviously made no sense ?. But I have sorted it now by adding one none row in the source data and then in the preparation table I put this: =IFERROR(SORT(FILTER(Sheet1[[Name]:[Name]], ((Sheet1[[Type]:[Type]]=AA$1)+(Sheet1[[Type]:[Type]]=" None")))),"")

  32. This is exactly what I need. But in my excel version, the functions Filter and unique are not working. any workaround for this, please?

  33. Hi,

    I have my source data and preparation data on a different sheet, I've read the tip at the top about how to get this to work with that, but I can't for the life of me figure out what I've done wrong?

    I have my equivalent data like this:
    Data sheet called Adresseliste:
    Dept in column A2:A78 (Named Postnummer)
    Preparation data in i D:CB (varying row length, data starts from row 2)

    Sheet with dropdown I call my data like this:
    C2 Data validation with column with a list =Postnummer
    D3 should then be dependent on C2 for the options I can pick: =INDIREKTE("Adresseliste!"&ADRESSE(2; KOLONNE(Adresseliste!C2) + SAMMENLIGN(C2; Adresseliste!$D$1#; 0); 4) & "#")

    https://1drv.ms/x/s!AlfA0KbCw_8kg9IpkGxrYDXxVAMUhA?e=fTud37

    Apologize for the danish, but I've added a workbook as well.

    • I realized that when you're working with excel in a different language, the sheet referencing can be a bit different.

      In my case, Spanish, I had to reference my sheet as 'MASTER DATA'! so I ended up with "'MASTER DATA'!"

      My formula in Spanish:
      =INDIRECTO("'MASTER DATA'!"&DIRECCION(83,COLUMNA(A1)+COINCIDIR(H43,'MASTER DATA'!B82#,0),4)&"#")

      I don't know in danish but you could try changing it.

  34. hi,

    I have a different query, What if i want multiple secondary drop-down based on one primary drop-down input.

    For EG. from the first (primary) drop-down, we select a country. Then other drop down lists Languages, Cities, rivers, etc should be visible for only that country in three different cells. So defining multiple ranges with the same name (country).

  35. Thank you for the replay but no sorry that’s not what I was trying,I don’t think I have explained it very well.

    What I want is to have a “none” for every item in the first column of the source data. Eg
    Dept. Manager
    Analysis None
    Project. None
    Planning None
    Design None
    Testing None
    Analysis Noah
    Project. Ava
    Planning Noah
    Design Sarah
    Testing Noah

    But I don’t want to have to add a “none” to the source data every time I add a new dept

    I tried to add a row of “None” to the preparation table (below the first transposed row and above the iferror formula) but the indirect formula won’t pick up this data.

    I have also tried adding a “none” in the validation box with the indirect formula and I have tried playing around to the formulas in the sheet. The most I can achieve is to add none to the end of every word in the drop down box and not as an extra drop down data.

    I hope that’s a clearer explanation.

    • Hello!
      The drop-down list and any Excel formula write the value only to the cell in which they are located. For two cells, you need to use VBA.

  36. This has worked brilliantly.

    Any chance you can add an extra data to the second drop down? So that the drop down list includes in the list “none”.

    Example new dept, the list would say, Neal, Peter, None

    I have tried adding a row to the preparation table but it won’t let me reference that row.

    • Hello!
      You need to add a record to the Source Data table. In the first column - New Dept, in the second column - Neal, Peter, None.
      I hope I answered your question. If you have any other questions, please don’t hesitate to ask.

  37. Hello
    I tried the same formula as mentioned in article. My problem is I cannot use # to get spill range. I can only get the top data for dependent list. If I put & "#" at the end, I always get "#REF!" error.
    =INDIRECT(ADDRESS(3,COLUMN(A2)+MATCH(G15,Cost,0),4)&"#")

    In my scenario, I have to use Cost (name for the title). I cannot use $B$2# to get the array range.

    How to use # to get the spill range please?

  38. Hi, this is a magical solution. Thank you.

    I adjusted the formula to make the list expandable and it seems to work. See below. Is there a reason you didn't do it this way? Will is cause me trouble in the future? The sheet is dedicated to this data so there is no issue with any data going in that shouldn't be there.

    =FILTER($D:$D,$C:$C=H1)

    • Hi Sarah Clare,

      Dragging this formula to the right through more columns than there are currently entries in the header row will produce a few columns with zero values in your preparation table. A zero will also appear in your primary dropdown. To prevent this from happening, you need to filter out all blanks as explained in the "How to make multiple drop-down list expandable" example.

  39. Thank you Svetlana. This was extremely helpful. I was struggling with this for many days. It is solved now.
    One more help required. Your formula works only if preparation table is created in the same sheet where the drop downs is required. Can it be linked to some other sheet. ( The challenge I am facing is that the moment I insert a column, I have to again fix the formula in preparation table. If it is some other hidden protected tab, things would be easier.)

    • Hi Monica,

      In "Step 3. Create a dependent drop-down list", there is a tip explaining how to adjust the formula for a preparation table on another sheet. Please check it out.

  40. Thank you Svetlana - this was a big help!

  41. This walk-through is great, the outcomes are magical. Thank you.

  42. Hi
    Is it possible to use a name with a "&" in a drop down list?
    My first list has two such names: "FOOD & DRINKS" and "SHOES & CLOTHING".
    I have found a way to deal with spaces for the 2nd drop downlist referring to the first: =INDIRECT(SUBSTITUTE(C274," ","_")) and when i look in the name list, the categories with & are named FOOD___DRINKS (with 3 lowers in between) so was wondering if it could be solved the same or similar way.
    =INDIRECT(SUBSTITUTE(C274," ","_","___")) does not work.
    Thanks!

  43. For some odd reason, I am struggling to create the dependency drop-down list. Do you have youtube videos?

    • Hi Bavu,

      Nope. This solution is based on quite a complex formula for the dependent list, which you can copy from this tutorial, and then adjust references for your data set.

  44. Hi,
    excellent solution.... is there a way to get an advice (or a conditional formatting) in case someone changes the Dept after having filled the Manager? I mean for example in [Expandable drop down (table)] if someone changes [Dept.] from "Planning" to "Design", to see that "Noah" is no longer valid.

    Thanks
    Marco

  45. Hi, I can't for the life of me figure out how to replicate this for my purposes.

    I have 4 columns of data that are dependent on one another. The values in column 4 is dependent on the value chosen from column 3, which is dependent on the value chosen from column 2, which is dependent on the value chosen from column 1. Would anyone be able to take a look at my file and let me know how I make this formula work for unique drop down dependent lists?

    https://docs.google.com/spreadsheets/d/10ZSDrPBm0tSeL20vZVF8odPht79A5M3KCk_uhYeISP0/edit?usp=sharing

    • Hi Kaya,

      The file is closed for editing (we can only view the sheet). Please share its editable copy with us (support@apps4gs.com) so we could help you out. Thanks.

    • Hi,

      Did yall figure out a solution to this? I am trying to do something similar.

      Thanks!

    • Hi there,
      Any solution on this?
      I really need a help with that.
      Thank in advance!

  46. Do you have any videos that show these steps?

  47. Hi, is there a way to make this approach work for a 3rd cascading picklist as well?

      • Hi Alexander,

        The article you reference is one that shows how to do multiple dependant drop downs for one row, and this article shows you how to create one dependant drop down for multiple rows. Now, how do create multiple dependant drop downs for multiple rows?

        My use case is a training log that will have hundreds of specific training courses to choose from so I want to have three pick lists to narrow down the potential courses for each entry (row): 1) Course Category (Filter/UNIQUE), 2) Course Subject (dependant on course category), and 3) Course Title (dependant on course subject). How do I do that?

        • I am trying to find the same thing as Mark above: combining both strategies into creating multiple dependant drop downs for multiple rows. In other words, replicate the functionality in the article Alexander referenced, but for multiple rows.

          • Same here ... using the two articles and trying to combine the approaches simply doesn't work for me.

            Can you include a chapter that shows how to introduce a 3rd (and 4th, 5th, ...) column and still lets you create multiple dependant drop downs for multiple rows?

            Thanks!

            • Hello Alexander,

              Have you figured out how to do this? Multiple drop-down levels with multiple rows....
              (Or at least let us know its not possible?)

              Please and thank you!

        • Hi, I'm also looking for that kind of solution, combining multiple dependant drop dows for multiple rows. The two solutions are nice and easy to update and maintain. Combining the two methods would be great!
          I'm using an ugly solution, it's a pain to add a new row in source data, with multiples tables and formulas. Difficult to maintain.
          Thanks for your help if you update your article :)
          Kind regards

  48. Hi,

    I am using another sheet for the source data but it comes up with an error for the second drop-down list in the data validation.
    I think it may be the reference to the cell that is before the column in the prep table

    This one =INDIRECT(CHAR(CODE("E")...
    Is there a way to reference the other sheet in this setup?

    The full formula is: =INDIRECT(CHAR(CODE("E")+MATCH(E2,sourcedata!$F$2#,0))&"3#")

    Kind Regards
    Torkild

    • Hello!
      Unfortunately, without seeing your data it is difficult to give you any advice. Could you please describe your task in more detail and send us a small sample workbook with the source data and expected result to support@ablebits.com? Please shorten your tables to 10-20 rows/columns and include the link to your blog comment.

      We'll look into your task and try to help.

      • Thanks, Alexander,
        Just sent the email with attachments now.

        Kind Regards
        Torkild

      • Thanks for the quick response and resolution to my problem.
        5 Stars rating all round! *****

        Kind Regards
        Torkild

    • For anyone else with this issue, simply change the source sheet name to Sheet1 and then copy the formula provided.

      Once the formula is working correctly, you can change the name of the sheet back to whatever you please and the formula will be updated correctly.

  49. Thanks for this tutorial. It is incredible.
    One question...
    When inserting this formula into my DATA VALIDATION for a dependent dropdown list:

    INDIRECT(CHAR(CODE("col_letter") + MATCH(dropdown_cell, dropdown_spill_range, 0)) & "row_num#")

    ...I realize that it does not work ("results in an error) if the "col_letter" I am using is multiple letters. (in my case, the column preceding my data I need for the drop down list is in Column "BI". But sense the CODE function only returns the code for the first value...it is not working.

    Any way to make this work in a DOUBLE LETTER column?

    • Hello!
      Without seeing your data it is difficult to give you any advice.
      If I understand your task correctly, the following formula should work for you:

      =INDIRECT(ADDRESS("row_num#",COLUMN(INDIRECT("col_letter"&"1")) + MATCH(dropdown_cell, dropdown_spill_range, 0)))

      I hope this will help, otherwise please do not hesitate to contact me anytime.

    • Hi Jonathan,

      Thank you for your question! I totally forgot about multi-letter columns, my bad. We have updated the formula and it now works fine for two-letter and even three-letter columns. Please see the "How this formula works" section for the detailed explanation.

  50. Svetlana, I see you are very proficient in EXCEL. I have a complicated formula that I need help with and can not figure out how to create it. Would you be willing to assist?

    In Cell C29 there is a percentage (25%) automatically calculated. If that percentage is less than 25% then a number needs to be added into cell C5 to make C29 reach the required percentage of 25%. I have tried everything possible and can not seem to figure this out. Would you be able to assist? Greatly appreciated.

    • Hello!
      What formula do you use to calculate the percentage in C29? If a number is already written in C5, then you can change it either manually or using a VBA macro. Give an example of the source data and the expected result.
      It’ll help me understand it better and find a solution for you.

Post a comment



Thank you for your comment!
When posting a question, please be very clear and concise. This will help us provide a quick and relevant solution to
your query. We cannot guarantee that we will answer every question, but we'll do our best :)