Well... foremost among the problems here is that you cannot name a Named Range with numerals. Doesn't matter what is in the cells referred to, numerals formatted as text, or whatever, Excel will NOT accept a Named Range named, for example, 1. So there is a misunderstanding somewhere in what you are writing.
Next, the column names. Simply giving them alpha, or alphanumerical, labels will not give
INDIRECT() anything it can use. Naming them, as Named Ranges would, but not simply filling them in as headers.
What WOULD work as you describe (without the
INDIRECT() functions) is to have the columns as Named Ranges as well. When I say that though, I do not mean the cell A2 is named Bravo, I mean the DATA under it is, so if you have five rows of data, it would have the value "=Sheet1!$B$2:$B$6" and the Named Range A (the first row of data, in row 2) would have a similar value: "=Sheet1!$B$2:$F$2". Then the formula would simply be:
and it would never even require implicit intersection.
Outside of saying Named Ranges like "1" and "33" exist, and wanting to use
INDIRECT(), it seems this is what you are looking for.
I would suggest that the work was originally structured to use implicit intersection and that it is not possible in the way you want to improve things, but
INDIRECT() still could not have contributed as described.
For example, say those Named Ranges named "1" or "33" did exist and referred to the cells the values were in. If
INDIRECT() were to read one of them, it would look at the cell referred to, take its contents, and try to make a cell address out of them. So it would try to make "33" refer to a cell and it would fail. Hence the errors. If, instead, the Named Range "33" actually referred to a range of cells (the data to its right) (for instance: "=Sheet1!$B$34:$F$34"),
INDIRECT() could read its contents and find that range which it could certainly convert to a cell reference and pass that on giving the same results as above, but in a rather more complicated, and unnescessary, way. But the name could not refer to the cell itself, but rather to the range of data as mentioned earlier.
If referring to the data, not to itself as implied, then "changing" the names to written out values like "First" would help because they would be real names Excel could use. But they could not ever have been "1" or "33" to change them from so...
To do what you wish, make Named Ranges for the columns and the rows, using legal names so it can actually be performed, and then use the formula given above.
As to the impracticality of creating those row names, don't go with "First" and so on. Just use the cell contents (the number present) and prepend an "a" to it so "a1" and "a2" and so on (Excel will not let one start with a numeral, period, so prepend). You can write a macro to do the physical work as it could use the cell contents to both give a name, then to alter the range specified for the data to its right, then move down. Loop it, or just copy and paste it as much as you feel needed to handle all the rows you could have. Be more sophisticated if you can. But even if it does all the labelled rows, then faults out, who cares? It did all the existing rows of data before it failed, eh?
Similarly the columns. Then, happy times!