Eu tive um problema semelhante. Minha abordagem era feia e ineficiente, mas funcionou.
Eu fiz uma segunda coluna, que olhou para ver se o valor da célula adjacente era o que eu estava procurando, e em caso afirmativo, dar um número de 0 + o valor da célula acima na segunda coluna.
Eu fiz uma terceira coluna onde cada célula olhou para a célula adjacente na coluna 2, e se o valor foi maior que o abaixo, para dar um valor de 0+ o valor máximo na terceira coluna até a linha da célula. Se não, ele cuspiu um valor vazio ("") Dessa forma, eu pude colocar um número de identificador seqüencial.
Eu fiz uma quarta coluna, onde olhou para a célula adjacente na coluna 3, e se era qualquer valor, exceto em branco, para colocar o valor dessa linha da coluna 2.
Eu então fiz uma quinta coluna que começou com 1, e cada linha foi uma acima da linha anterior, até o valor máximo da coluna 3.
Eu terminei de fazer uma sexta coluna que usava a função de pesquisa. O valor de pesquisa seria a célula adjacente na coluna 5. O intervalo seria a coluna 3 e 4. Eu teria que cuspir o valor da coluna 4.
Eu defino uma seqüência de valores idênticos como uma execução. Cada número na coluna 5 representa uma execução. Cada número na coluna 6 representa o tamanho dessa execução. Isso permite gerar os tamanhos de cada uma das execuções.
Como eu disse, esse é um jeito feio de fazer isso, e provavelmente poderia ser escrito muito mais limpo no VBA, mas é eficaz.