Comprar Coleção de 15.000 Macros, Funções e Fórmulas do Excel           Dicas  


Pergunta:

Trabalhando em alguns colégios, perco muito tempo ao ter que classificar as notas dos meus alunos. Cada uma das minhas classes tem cerca de 30 a 40 alunos, e as notas, exigência da direção, devem ser fracionarias com uma casa decimal. Preciso então comparar cada nota com as demais estabelecendo a classificação (É claro que notas repetidas tem a mesma classificação).

A titulo de exemplo, transcrevo abaixo, as notas e sua classificação final.
Notas: 2,3; 3,4; 0,0; 5,6; 6,1; 2,5; 2,5; 3,5; 3,7
Clasf: 8°; 5°; 9°; 2°; 1°; 7°; 7°; 4°; 3°

Observando-se as duas linhas ao mesmo tempo, indiquei que quem tirou 6,1 ficou no primeiro lugar, quem tirou 5,6 ficou em segundo lugar, quem tirou 2,5 ficou em sétimo lugar, etc... Quando a lista de notas é grande, a classificação fica penosa, difícil, sujeita a erros. Já recorri a outras fontes sem resultados. Teria a Central de Ajuda em Excel / VBA como solucionar este caso ?

Resposta:

Tudo o que se indicar abaixo, a título de exemplo, se aplica integralmente a qualquer range de dados.
(Solução interativa)

1.Escreva suas 9 notas no range b6:b14
2.Escreva em c6 a fórmula : {=somas(se(b6>=$b$6:$b$14;1))} e arraste-a até c14
3.Em c3 escreva =Minimo($c$6:$c$14)
4.Em d6 escreva a fórmula =b6-Minimo($c$6:$c$14) e arraste até d14
5.Em e6 escreva a formula {=soma(se(d6<=$d$6:$d$14;1))} e arraste até e14

Os valores no range e6:e14 corresponderão à classificação sem o perigo de erros.
Obs :- Não se esqueça do Ctrl Shift Enter

Caso V.Sa queira fazer um programa, leve em conta as seguintes observações :

1. O range b6:bn tem as características de um range dinâmico, capaz de espichar
ou de encolher dependendo do numero de notas lançadas.
O numero de notas lançadas por sua vez tambem não é igual ao de alunos de mesma classe, pois pode ocorrer faltas aos exames.

2.Para resolver o problema do range dinâmico :
1)em sheet1 selecione os dados na coluna b (b6:bn)
2)<Insert <Name <Define

Name: RangeDinamico
Refers to: =DEsloc(Sheet1!$b$6;0;0;Cont.Valores(Sheet1!$B:$B);1))

3.Em module1 escreva a rotina :

Sub ClassificandoNotas( )
Worksheets(1).Select
RangeDinamico.Select
....Neste ponto escreva o que for necessário.
End