LeandroPr e Mandrix,
não sei se eu é que não entendi corretamente, pegando sómente uma amostra dos primeiros resultados no exemplo postado sem filtrarmos temos:
Desconsiderando as demais colunas:....................Ranking
NOME..........................................NOTA...Formula Mandrix
LUCIANA ROCHA NOGUEIRA.....................99........1
CAIO AUGUSTO RIOS FEOLA.....................99........2
EVELYN NATHALIA DA SILVA CRUZ ............98.........3
ANA VIEIRA DE ARAUJO .........................98........4
LAIS MAYUMI HARA ..............................98 .......5
MARIA CLARA MOREIRA MATIAS ...............98 ........6
LEYNA MISACHI SUZUKI .........................98.......7
MARIA CAROLINA SARTORIO ....................98.......8
MARIANA DRUMMOND MARTINS LIMA .........98........9
Como temos Notas Repetidas, o correto não seria :
As duas notas 99 o Ranking ser 1
E todas as Notas 98 o Ranking ser 3
Como não estou acostumado com esta função mas vendo classificações de eventos na TV, e não tendo nenhum outro criterio para desempate, acredito que estou pensando da forma correta, me corrijam por favor se estiver errado.
Mas se eu estiver correto, utilizando a função em VBA (WorksheetFunction.Método Ordem) ou ORDEM função nativa, troque a rotina pela abaixo, façam os testes e veja se é isto.
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [c_curso]) Is Nothing Then 'Verifica se o curso foi selecionado
Call filtrar 'Invoca o metodo filtrar
Call MontaRanking
ElseIf Not Intersect(Target, [c_modalidade]) Is Nothing Then 'Verifica se a modalidade foi selecionada
Call filtrar 'Invoca o metodo filtrar
Call MontaRanking
ElseIf Not Intersect(Target, [c_periodo]) Is Nothing Then 'Verifica se o periodo foi selecionado
Call filtrar 'Invoca o metodo filtrar
Call MontaRanking
End If
End Sub
Sub MontaRanking() 'Função ORDEM
Dim a As Long
Dim sUltimaLinha As Long
sUltimaLinha = ActiveSheet.Cells(Cells.Rows.Count, 5).End(xlUp).Row
'Atualiza o Ranking
For a = 8 To sUltimaLinha
Cells(a, 6) = Application.WorksheetFunction.Rank(Cells(a, 5), Range("E8:E" & Range("E65536").End(xlUp).Row), 0)
Next a
End Sub
[]s
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Postado : 21/02/2014 7:05 pm