I have a spreadsheet where I would like to model the progress of several projects over a few years. The projects start in differing years.
I have a table with years in the horizontal axis and projects on the vertical.

I need programatically to work out in which year each project starts. This was easy when the project line is static – I used a LOOKUP() function to connect the project number with the year number, but I would like to set-up various scenarios so that I can alter the schedule of projects on the fly from a preset list.
This was easy enough – I just set-up another table with scenarios in the vertical and the projects on the horizontal, and pulled the correct row into the main table with an INDEX() function.

However, doing this seems to have screwed-up my ability to work out what year each project starts. The formula now gives very odd results.
Is this because I am trying to LOOKUP() inside a range which has been pulled from somewhere else via an INDEX() call?
If so, can anyone help me work out how to work around it? I don’t understand why my formula is giving me such odd results.

If you want to see the spreadsheet it’s available here:
http://diggory.net/Grazing/stackExchange/Index%20of%20lookup.xlsx
Thanks in advance for any help.
You can use the following:
This will return the year from the matched project.
Match will return the column number, index uses that to find the intersection of the returned column number and the row with the years.