Isso não é difícil se você assumir que Coluna A está classificada,
então estamos lidando com intervalos contíguos na coluna B
(que é o que os aspectos visuais da sua pergunta sugerem).
Configure a coluna E como uma coluna auxiliar com esta fórmula:
-
E2→=IF(A2=A3, E3, ROW())
Para cada linha, isso identifica a última linha do intervalo que a linha atual está dentro Então você pode obter os resultados desejados com
-
B2→=IF(A1=A2, "", AVERAGE(B2:INDIRECT("B" & E2))) -
C2→=IF(A1=A2, "", STDEV(B2:INDIRECT("B" & E2)))
(Ou use qualquer método que você queira para calcular o desvio padrão.)
Isso verifica se é a primeira linha de um intervalo.
Se for, ele usa a função INDIRECT() para construir um intervalo
entre a célula atual e a última célula com o mesmo valor de ID.
E, é claro, você pode ocultar a coluna E ou usar alguma coluna fora da vista
(por exemplo, Z ) como coluna auxiliar.
Observe que esta solução não usa fórmulas de matriz.


