Calc: Média dos “N” Maiores Valores de uma Lista
Para calcular as notas de meus alunos de Laboratório, geralmente é necessário de fazer umas operações um pouco mais complexas que uma simples média, de forma que uma simples função do Calc nem sempre resolve a questão.
O problema que proponho aqui consiste em fazer a média das “N” maiores notas de um conjunto de “M” notas de relatórios, utilizando uma planilha Calc, onde “M” deve ser maior ou igual a “N”.
Tome como exemplo as notas dos três alunos hipotéticos, apresentados nas células D5 a I7 da planilha abaixo.
O Fulano fez todos os relatórios, tirando as notas (3,5; 6,7; 8,8; 6,4; 7,8; 5,5), Beltrano fez apenas dois relatórios com as notas (7,8; 5,3), enquanto que Sicrano não fez nenhum dos trabalhos. Desta forma as médias destes alunos seriam:
Arredondados com 1 algarismo após a vírgula.
Para fazer isto vou usar a função SOMASE(LISTA; CONDIÇÃO). A lista é o intervalo de dados, neste exemplo de D5 até I5, a condição seria os dados maiores ou igual a 6,7, que é a terceira maior nota dos relatórios. O comando para a nota do Fulano ficaria assim:
=SOMASE(D5:I5; ">=6,7")/3
Isto deve resultar 7,7666666…, que corresponde ao 7,8, quando arredondado. O arredondamento ficará para o final.
O problema ai é que provavelmente em um outro aluno a terceira maior nota não seria, necessariamente, 6,7. Portanto é necessário colar, no lugar do 6,7, o valor da terceira maior nota do aluno em questão. Isto pode ser determinado pela função MAIOR(LISTA; POSIÇÃO). A LISTA será e mesma anterior e a POSIÇÃO, neste caso, será 3. Desta forma, o comando SOMASE pode ser reescrito como:
=SOMASE(D5:I5; ">="&MAIOR(D5:I5; 3)/3)
Para concatenar é necessário usar o operador “&“, que irá unir o resultado da função MAIOR à string “>=”. Para automatizar um pouco mais o processo, troque o 3 por uma célula onde o número de relatórios desejados para a média possa ser alterado. Vou usar a célula B2 para manter o número de relatórios usados para a média. Neste caso a linha de comando deve ficar:
=SOMASE(D5:I5; ">="&MAIOR(D5:I5; B$2))/B$2
O “$” à frente do “2” é para travar a linha 2 da planilha, quanto este comando for replicado (arrastado) para as demais linhas. Esta linha funciona muito bem para os alunos que tiveram 3 ou mais relatórios entregues, mas irá gerar um erro para os que tiverem menos relatórios que o valor em B2, como acontece com o Beltrano.
Este erro ocorre na função MAIOR, pois não existe a terceira maior nota na lista, uma vez que o aluno Beltrano possui apenas duas notas.
Neste caso, será necessário mais duas funções para resolver o problema: CONT.NÚM(LISTA) e um SE(CONDIÇÃO; VALOR_VERDADEIRO; VALOR_FALSO). A primeira função será usada para contar o número de relatórios entregues por cada aluno. Para isto acrescente os comandos abaixo para as células C5, C6, …:
=CONT.NÚM(D5:I5)
=CONT.NÚM(D6:I6)
...
A função CONT.NÚM, na verdade conta as células que possuem números, o que neste caso são as colunas com notas dos relatórios.
Para terminar, aplique um SE(CONDIÇÃO; VALOR_VERDADEIRO; VALOR_FALSO) para determinar o parâmetro POSIÇÃO do comando MAIOR. O SE deve selecionar a contagem do número de relatórios (coluna C) como parâmetro POSIÇÃO, caso este seja menor que B2, ou o número em B2 em caso contrário. O SE para a linha 5 deve ficar assim:
=SE(C5
Utilize isto para substituir o B$2 do SOMASE:
=SOMASE(D5:I5; ">="&MAIOR(D5:I5; SE(C5
O Sicrano ainda vai gerar um erro, pois este não fez nenhum dos relatórios. Neste caso adicione mais um SE para verificar se o número de relatórios é igual a zero. Neste caso a nota será zero. A linha completa seria assim:
=SE(C5=0;0;SOMASE(D5:I5; ">="&MAIOR(D5:I5; SE(C5
Para terminar, utilize a função ARRED(VALOR, POSIÇÃO) para arredondar o resultado com um algarismo após a vírgula.
=ARRED(SE(C5=0;0;SOMASE(D5:I5; ">="&MAIOR(D5:I5; SE(C5
Replique isto para as demais células na coluna B e deve terminar com o planilha assim:
Deixe uma resposta