RRMartins,
Veja se a rotina abaixo atende sua necessidade.
Sub indexarLista()
Dim primeiraLinha, ultimaLinha, contador As Long
With ThisWorkbook.Sheets(1)
.Activate
Range("A1").Select
Range(Selection, ActiveCell.SpecialCells(xlLastCell)).Select
contador = 0
primeiraLinha = 2
ultimaLinha = .Cells(Rows.Count, 1).End(xlUp).Row
With ActiveWorkbook.Worksheets(1)
.Sort.SortFields.Clear
.Sort.SortFields.Add2 Key:=Range( _
"A2:A" & ultimaLinha), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
End With
With ActiveWorkbook.Worksheets(1).Sort
.SetRange Range("A1:B" & ultimaLinha)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Range("A1").Select
While primeiraLinha <= ultimaLinha
If Cells(primeiraLinha, 1) = Cells(primeiraLinha + 1, 1) Then
contador = contador + 1
Cells(primeiraLinha, 2) = contador
Else
Cells(primeiraLinha, 2) = contador + 1
contador = 0
End If
primeiraLinha = primeiraLinha + 1
Wend
End With
End Sub
Pode ser que não seja útil, já que esta rotina classifica os dados da guia á partir da coluna A, para depois indexar os dados na coluna B.
Outra coisa, se atente ao parâmetro .Add2. Caso seja retornado algum tipo de erro, experimente alterar para .Add.
Espero ter ajudado.
Abs.
Saulo Robles
Postado : 08/01/2020 6:09 pm