Notifications
Clear all

Autonumerar com condição

2 Posts
2 Usuários
0 Reactions
1,045 Visualizações
(@rrmartins)
Posts: 0
New Member
Topic starter
 

Preciso criar uma macro que numere sequencialmente os itens das Notas Fiscais (Coluna B) e reinicie do (1) a cada mudança no número do documento Coluna A. Exemplo:
Coluna A /Nr.DOC Coluna B /
Linha 1 / 303123 1
Linha 2 / 303123 2
linha 3 / 303123 3
linha 4 / 303123 4
Linha 5 / 200321 1
Linha 6 / 200321 2
linha 7 / 500482 1

 
Postado : 08/01/2020 4:50 pm
(@srobles)
Posts: 0
New Member
 

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.

 
Postado : 08/01/2020 6:09 pm