As far as I could tell after further research, the Excel INDIRECT function just doesn't work with dynamic ranges. There may be a smart way to get INDIRECT using INDIRECT and stick to the world of non-VBA Excel, but I don't know this way. Instead, I created a custom function very similar to the one described here . I changed my basic formula to read =VLOOKUP(B2,DINDIRECT("ExampleRange"&C1),2,FALSE) , where DINDIRECT is the name of the VBA function I created.
The only downsides (which may or may not be reduced depending on how you look at it), is that the workbook should be saved as a macro-enabled workbook, and the use of a custom function is not very documentation and needs a little explanation to other users. However, all this was considered an acceptable solution for me.
If there is no link here is the code:
Public Function DINDIRECT(sName As String) As Range Dim nName As Name On Error Resume Next Set nName = ActiveWorkbook.Names(sName) Set nName = ActiveSheet.Names(sName) On Error GoTo 0 If Not nName Is Nothing Then Set DINDIRECT = nName.RefersToRange Else DINDIRECT = CVErr(xlErrName) End Function
Note. Despite the fact that this solution worked, I will not accept my answer because I do not want to prevent others from posting the best solutions. Also, I'm new to the site, so sorry if I break any etiquette codes by answering my own question ... I just thought I'd share the exact solution I used if others found it useful.
source share