Seguindo seu exemplo, a fórmula será:
=MAX(INDIRECT(
CELL("address", INDEX($B$1:$B$9, MATCH(ROW(), $A$1:$A$9, 0)))&":"&
CELL("address", INDEX($B$1:$B$9, MATCH(ROW(), $A$1:$A$9, 1)))
))
Explicação
INDEX( ... ) recupera o valor em um grupo igual à linha atual. Se você estiver na linha 1, ele recuperará o valor do grupo 1.
A coisa interessante está usando 0 para match_type retorna o primeiro valor correspondente, enquanto 1 retorna o último valor.
CELL("address", ... ) retorna o endereço da célula retornada pelo INDEX , ou seja, sempre o primeiro e o último valor correspondente do grupo.
INDIRECT( ... &":"& ... ) converte a string formada em um intervalo. Por exemplo, para o grupo 1, será INDIRECT("$B$1:$B$3")
MAX( ... ) encontra o maior valor no intervalo retornado por INDIRECT