Don't both of your formula suggestions rely on the ability of the formula results to spill, noting that the OPs version indicates they do not have that feature?
Unless I am misunderstanding what you are saying, they can be used directly, with INDIRECT (if that is not a contradiction), in data validation without doing anything manually in Name Manager.
Both of my suggested formulas will work in older versions of Excel (tested and confirmed with Excel 2010), so long as they're defined in Name Manager or used directly in Data Validation (without directly referencing the structured table names).
As you've pointed out, the INDIRECT function can be used as a workaround; however, I wouldn't recommend it because the Data Validation list source is limited to 255 total characters. With lengthy table/column names, the formula can easily end up exceeded the character limit. For example, the INDEX:INDEX variant would be 261 characters long when all of the necessary INDIRECT functions are added.
There's two ways I would recommend implementing my suggested formulas:
Option 1: If L10 is the only cell in the workbook where the Contractor Type is selected, then you can define a dynamic named range in Name Manger using the entire formula. For example,
lstContractors could be defined as follows:
Excel Formula:
=OFFSET(TableContractors[Contractor List],MATCH(Sheet1!$L$10,TableContractors[Contractor Type],0)-1,0,COUNTIF(TableContractors[Contractor Type],Sheet1!$L$10))
NOTE: adjust the sheet name (Sheet1) as needed.
Then, use
=lstContractors as the dependent Data Validation list source.
Option 2: If L10 is NOT the only parent cell in the workbook (e.g. if you need to have dependent data validation functionality for every row in a table), I would first define two shorter/concise names in Name Manager for the necessary table columns. For example,
ctrNames and
ctrTypes could be defined as
=TableContractors[Contractor List] and
=TableContractors[Contractor Type] respectively.
Then, the following formula could be used directly as the Data Validation list source:
Excel Formula:
=OFFSET(ctrNames,MATCH($L10,ctrTypes,0)-1,0,COUNTIF(ctrTypes,$L10))
This is what it looks like in
Excel 2010:
I hope that clears things up. Cheers!