Before we had the luxury of dynamic array functions, creating dependent data validation lists typically required using multiple tables and named ranges, as shown here. Setting them up was laborious, however now that we have dynamic array functions, creating dynamic dependent data validation lists is much easier.
Note: this technique requires a Microsoft 365 license for access to dynamic array functions. If you don’t have 365, you can use this technique.
Watch the Video

Download Workbook
Enter your email address below to download the sample workbook.
Dynamic Dependent Data Validation with Dynamic Arrays
In the table below called TblRegions I have a list of my countries and some of their regions:
In cell H4 the UNIQUE function extracts a list of sorted country names which are transposed across the columns to form the headers for the region lists:
The result of the formula in cell H4 also feeds the data validation list for the countries. Notice the use of the # sign in the Data Validation List cell reference: $H$4# This ensures the data validation list will pick up any new countries added to the TblRegions table.
In cell H5 the FILTER function returns the list of regions for the country in row 4. I’ve wrapped it in the SORT function to ensure the list returned is sorted alphabetically.
Note: you cannot use the FILTER function directly in the data validation list Source field because this field requires a range as opposed to the array of values returned by FILTER.
The data validation list uses the XLOOKUP function to return the range containing the list of regions for the country selected in column B. Notice the use of absolute and relative referencing on the lookup column ‘B’ and the use of the # sign to return a dynamic range (watch video for specific instructions):
With this approach any updates to the TblRegions will automatically be included in the data validation lists.
Harshad Nizam
Dear Mam,
With reference to your video on dependent data validation, i want to ask you a doubt. Since, no one is answering me for that.
At the video 6min 24 second, you have selected Country as “UK” and Region as “Essex” and other two countries with its Region. Now my doubt or my question is, If I change “UK” to “USA”, then will the region automatically changes or the data validation list changes automatically to “AL” without clicking in region data validation. Beacuse normally it remains under same UK regions when we select Country as USA.
Please support for my doubt and how to do this. Also, request you to suggest with your best excel courses in linkedin.
Thanks and Regards,
Mynda Treacy
Hi Harshad,
The region does not automatically change if you choose a country that no longer matches the previously selected region. You must click in the region cell and choose a new region. The data validation list will be updated to show regions that match the now selected country. You can download the example file above and try it yourself and you’ll see.
I don’t put my courses on LinkedIn. You can see my course options here.
Mynda
J-R
Hi
for the first method,you can in the data validation box use =indirect(“country[Country]”). -> (“tableName[columnName]”)
So you don’t need to set the named range.
Mynda Treacy
Yep, nice tip! Thanks for sharing. I tend to avoid INDIRECT because it’s volatile, but if used sparingly it’s fine.
Guenther Wagner
Hello,
if you enter another country, the “2nd” Dropdown list *does not expand*, so only the first dropdown is dynamic…. It still only refers to columns H to J in your example file, the new column (K) is not included….This is a waste of time and useless, please propose a solution where the “secondary” (or dependant() dropdowns for a 4th country also work!
🙁
Mynda Treacy
Hi Guenther,
To dynamically expand the regions for more countries, copy the FILTER function across more columns and use the ‘not found’ argument in FILTER to return blank with two double quotes, e.g.:
=SORT(FILTER(TblRegions[Region],TblRegions[Country]=H4,””))
Then modify the XLOOKUP to also include further columns e.g. if your FILTER formulas are in columns H:P your XLOOKUP would be:
=XLOOKUP($B5,$H$4:$P$4,$H$5:$P$5)#
Mynda