Data validation - dynamic and also dependent on a particular column

realdemigod

Board Regular
Joined
Aug 19, 2014
Messages
51
Office Version
  1. 365
Platform
  1. MacOS
Hi,
Please refer to the image in the link below. I’m trying to create a data validation that lets a user choose Product and Colour of a car from the Manufacturer.


Is there way to put some function in data validation list option so that it looks for Audi on the worksheet and takes the Product as the first list and then second data validation show the list of colours again the product types (Q7 and Q5)


For example data validation at A1 should show Q7 and Q5 and then at B1 should show the corresponding colours against each model for Audi. The range could be anywhere in the particular columns but the placements of the columns are fixed. So defining a name would be a challenge.

I can't use any macro. Is it possible with some if or some other function?

HTML:
https://imgur.com/aevnBpg

Thanks
 
I can't see how you can build multiple LoV selections from the data list as Data Validation, List needs the dropdown entries to be contiguous.
 
Upvote 0

Excel Facts

How to fill five years of quarters?
Type 1Q-2023 in a cell. Grab the fill handle and drag down or right. After 4Q-2023, Excel will jump to 1Q-2024. Dash can be any character.
I had a thought...
The Manufacturer is unchanged as it doesn't rely on any other factor, but can you give me a number of the absolute maximum Manufacturers you'll ever have?
The Product and Colour could be done horizontally with data extracted and formulae for each row of LoVs.
What is the maximum number of LoV selection rows?
What is the maximum number of Products for any one Manufacturer?
What is the maximum number of colours for a Product?

I want to have some limit as I'm afraid it may be slow with so many formulae but I can try.
 
Upvote 0
That is a challenge, the data keeps changing, can't put maximum on minimum for any field :(
 
Upvote 0
Oh! OK, so if I can't use horizontal tables for each row (for which I'd need to put some kind of range limit) and I don't want to resort to VBA then the best I can do is this...

The new values in column O use the active cell =CELL("row") to identify which row you're working on and then build the dynamic LoV's based on that Manufacturer. The wrinkle is that if you want to change an existing row entry you must re-select the Manufacturer first so it knows which row you're working on.

Here's the sheet with rows up to 1,000 allowed but you can easily change that and it should theoretically work up to 1 million... but I wouldn't expect a quick recalculation with that many rows.

Book1
ABCDEFGHIJKLMNO
1--- Selections ------ Data ------ Worker Columns ---
2ProductColourManufacturer$L$4:$L$5$M$4:$M$5$N$4:$N$62
3ManufacturerProductSelect ColourQ7WhiteAudiManUManProdProdUManProdColorsBMW
4AudiQ5BlueQ7BlueAudi6Q7Audi AudiX3GreyX3BMW
5BMWX3MagentaQ7RedAudi5Q7Audi BMWX5Magenta
6Q7BlackAudi4Q7Audi   Florescent
7Q5BlueAudi3Q7Audi    
8Q5WhiteAudi2Q5Audi    
9X3GreyBMW1Q5Audi    
10X3MagentaBMW6X3BMW3   
11X3FlorescentBMW5X3BMW2   
12X5TealBMW4X3BMW1   
13X5BabyBlueBMW3X5BMW3   
14X5StarkWhiteBMW2X5BMW2   
151X5BMW1   
160     
170     
Master
Cell Formulas
RangeFormula
L2:N2L2=ADDRESS(ROW(L4),COLUMN())&":"&ADDRESS(ROW(L4)+COUNTIF(L4:L44,"> ")-1,COLUMN())
O2O2=CELL("row")-COLUMNS($A$1:$C$3)
O3O3=INDEX($A$4:$A$9999,O2,1)
I4, I5:I17I4=COUNTIF($G3:$G$1000,G3)
J4, J5:J17J4=E3&G3
K4, K5:K17K4=IF(G3=$O$3,COUNTIF($J4:$J$1000,E3&G3),"")
L4, L5:L17L4=IF(COUNTIF(I:I,1)<ROWS(L$3:L3),"",INDEX(G$3:G$1000,AGGREGATE(15,6,ROW(I$4:I$1000)-ROW(L$3)/(I$4:I$1000=1),ROWS(L$3:L3))))
M4, M5:M17M4=IF(COUNTIF(K:K,1)<ROWS(M$3:M3),"",INDEX(E$3:E$1000,AGGREGATE(15,6,ROW(J$4:J$1000)-ROW(M$3)/(K$4:K$1000=1),ROWS(M$3:M3))))
N4, N5:N17N4=IF(COUNTIF($J$4:$J$1000,$O$4)<ROWS(N$3:N3),"",INDEX(F$3:F$1000,AGGREGATE(15,6,ROW(N$4:N$1000)-ROW(N$3)/(J$4:J$1000=$O$4),ROWS(N$3:N3))))
O4O4=INDEX($B$4:$B$9999,O2,1)&INDEX($A$4:$A$9999,O2,1)
Cells with Data Validation
CellAllowCriteria
A4:A1000List=INDIRECT($L$2)
B4:B1000List=INDIRECT($M$2)
C4:C1000List=INDIRECT($N$2)
 
Upvote 0
Thanks Toadstool, this seems to be working great! I will implement on my large data set and hopefully should not have any problem. Thanks again!
 
Upvote 0

Forum statistics

Threads
1,223,749
Messages
6,174,288
Members
452,554
Latest member
Louis1225

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top