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