Use OFFSET
para alterar o intervalo da célula superior à esquerda para obter o intervalo correto.
=INDEX($B$5:$B$8, MATCH($J$5, OFFSET($C$5, 0, MATCH($J$4, $C$4:$F$4, 1)-1, ROWS($B$5:$B$8), 1), 1))
Explicação
Isso se comporta como sua fórmula INDEX MATCH
, mas eu mudei o E5:E8
em seu exemplo para um intervalo relativo, definido por OFFSET( ... )
OFFSET($C$5, //Reference point
0, //Rows shifted below, in this case it doesn't shift the row
MATCH($J$4, $C$4:$F$4, 1)-1, //Column shifted to the right, in this case it shifts from '1-4' minus 1.
ROWS($B$5:$B$8), //Height, in this case you want as many rows as the table has, taken from the left "header"
1) //Width, in this case you only want one column
$C$5
é a célula superior à esquerda nos seus valores que é usada como um ponto de referência.
MATCH($J$4, $C$4:$F$4, 1)-1
é para obter o índice do cabeçalho da coluna. Isso é semelhante à sua fórmula HLOOKUP
, mas retorna o número da coluna (a terceira coluna retorna 2, por exemplo)
ROWS($B$5:$B$8)
é obter quantas linhas a tabela possui, tiradas de quantas linhas o "cabeçalho" esquerdo tem