Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Non-volatile way to use table for data validation without using INDIRECT

One place where I often use the INDIRECT function is for data validation. If I have a table called tabColor with a column called Color, and I want to use that for data validation, you would think you could set up the data validation as a list with this formula:

=tabColor[Color]

However, this causes an error. If you wrap the formula with INDIRECT, it works:

=INDIRECT("tabColor[Color]")

So, I have two questions:

  1. Will using INDIRECT in data validation cause the cell to be marked as volatile?
  2. Is there a non-volatile way to use a table for data validation?

Btw, if you want to know more about volatile functions, a nice write-up can be found at chandoo.org

like image 672
ccampj Avatar asked Oct 15 '25 02:10

ccampj


1 Answers

  1. Yes. The data validation list is refreshed whenever any calculation cycle in the workbook runs. This is a form of invisible parasitic calculation lag when volatile formulas are used in Data Validation, Named Ranges, Conditional Formatting rules, etc.
  2. Create a Named Range with the Refers to: as =tabColor[color] then use the name of the named range as the Data Validation list's Source:. Sadly, table naming conventions have not caught up with all of the features where they should be able to be used directly.