Hi, that's fine but I am constructing a virtual reference with a named range that returns an array.
Your example returns a reference not an array.
The simple example I gave was setting the source to a constant array did you try it?
The actual application I'm attempting is as follows:
=INDEX(Factories[Country],SMALL(IF((Factories[Region]=!RC[-1])*(MATCH(Factories[Country],Factories[Country],0)=Factories[indx]),Factories[indx]),ROW(INDIRECT("1:"&CountriesInRegionCount))))
Factories is a table of factories with columns for Region, Country and Indx (the row of the table)
The Region is in the cell to the left and the CountriesInRegionCount is the number of countries in each region.
The formula constructs a column of height CountriesInRegionCount
It uses the small function along with the match(A,A,0) structure to create a contiguous list of Indx's (locations in the table) where the the Region column matched the cell to the left.
So if the countries in the region are in rows 1,5,and 7, then the formula will construct the rows array in the Index function as {1;5;7;r1;r2;r3...} where r1 r2 etc are the Index value of table records that do not match the criteria. The Indirect function
then constructs a vertical index vector of length CountriesInRegionCount, to feed into the second parameter of the small function, which then serves as the row numbers for the index function
The end result is a vertical vector containing the countries in the region.
This works fine when I CSE it into a vertical range in the spreadsheet but fails in the validation with the error I mentioned in my previous post.
Like I said, it returns an array, NOT a reference and I just want to know if the data validation can accept this or not and I would like some comprehensive documentation on what its limitations are.
Cheers