Numeração Automática no Excel com VBA | Excelmax Soluções e Controles

quinta-feira, dezembro 01, 2016

Numeração Automática no Excel com VBA

Numeração Automática no Excel com VBA (Macro)

Numeração automática, vba, excel, macro, auto numeração

Quando desenvolvemos aplicativos (softwares ou alguma outra solução) em Excel precisamos criar uma coluna com Numeração Automática (conhecida por ID (sequência lógica de números)).

Existem várias maneiras de fazer isso. Esta postagem estará abordando duas maneiras de fazer isto através das macros (VBA).

1. Numeração Automática sem Interrupção

O script (macro) a seguir pode ser utilizado para inclusão de numeração automática sem interrupção ou seja, toda vez que um novo item for adicionado na base, toda a numeração é refeita e, se algum item tiver sido excluído, a numeração é ajustada.
Numeração Automática, VBA, Excel, Macro

A figura ao lado demonstra o exemplo citado. Na planilha mais a esquerda vemos uma numeração com a falta de três números: 3, 4 e 7.

Depois que rodamos a Macro, a numeração é refeita e ajustada conforme planilha mais a direita e o número sequencial adicionado é o 7.





Macro: Numeração automática sem interrupção:

   Sub numeração_sem_interrupcao()
       i = Plan1.Cells(Cells.Rows.Count, "a").End(xlUp).Row + 1
       For j = 2 To i
            If IsNumeric(Plan1.Cells(j - 1, 1)) Then
                 Plan1.Cells(j, 1) = Plan1.Cells(j - 1, 1) + 1
            Else
                 Plan1.Cells(j, 1) = 1
            End If
       Next
   End Sub

Explicações sobre a macro:

          i = Plan1.Cells(Cells.Rows.Count, "a").End(xlUp).Row + 1
                   Encontra a última linha com informações e avança mais uma linha.

          For j = 2 To i     
                 ...     
          Next
                   Faz um loop (ciclo), ou percorre até que a variável "j" seja igual a variável "i".

          If    ...    Else    ...    End If
                   Condições "Se ..." e "Senão ...". Se a primeira condição for atendida, sendo um valor numérico (If IsNumeric(Plan1.Cells(j - 1, 1)) Then) executa a linha depois do "If": (Plan1.Cells(j, 1) = Plan1.Cells(j - 1, 1) + 1); senão, executa a linha depois do "Else": (Plan1.Cells(j, 1) = 1).

2. Numeração Automática com Interrupção

O script (macro) a seguir, assim como o anterior, pode ser utilizado para inclusão de numeração automática. A diferença é que toda vez que um novo item for adicionado na base, a numeração não é refeita. Apenas um número sequencial é adicionado na primeira linha em branco que for encontrada adicionando o valor 1 ao valor da célula anterior (acima).
Numeração Automática, VBA, Excel, Macro

A figura ao lado demonstra o exemplo citado. Na planilha mais a esquerda vemos uma numeração com a falta de três números: 3, 4 e 7.

Depois que rodamos a Macro, a numeração NÃO é refeita conforme planilha mais a direita e o número sequencial adicionado é o 10 (somasse o valor da célula anterior 9, + 1).




Macro: Numeração automática com interrupção:

   Sub numeração_com_interrupcao()
      j = Plan1.Cells(Cells.Rows.Count, "a").End(xlUp).Row + 1
       'For j = 2 To i
            If IsNumeric(Plan1.Cells(j - 1, 1)) Then
                 Plan1.Cells(j, 1) = Plan1.Cells(j - 1, 1) + 1
            Else
                 Plan1.Cells(j, 1) = 1
            End If
       'Next
   End Sub

Explicações sobre a macro:

          Seguir as mesmas explicações/orientações do Script anterior com exclusão de: 
                    For j = 2 To i     
                         ...    
                    Next  
               (conforme apresentado na macro acima).

Na postagem Série: ListView para Excel e VBA - Modificando Dados (2) pode ser encontrado outro exemplo de numeração automática. Poderá encontrar também outros exemplos citados em outras matérias aqui no ExcelMax® Soluções.

Compartilhe com seus amigos enviando-lhes e-mails, divulgando nas Redes Sociais, por telefonefalando-lhes pessoalmente ou da forma que puder e desejar.

Você pode fazer parte da Comunidade ExcelMax® Soluções. Para isso, basta acessar e inscrever-se. Desta forma, a cada nova publicação você estará recebendo informações em seu e-mail.

Abraço a Todos!
Professor e Consultor: Ivair Claudio Ferrari.


9 comentários:

  1. Como sempre, excelente matéria e muito bem explicada. Valeu !!!

    ResponderExcluir
  2. Muito bom ! Sempre quis aprender a fazer isso.

    Obrigado!
    Franco Guedes.

    ResponderExcluir
  3. Sempre fiz isso manualmente e ocorria erros por repetir alguns números. Com esta macro ficou mais fácil. Obrigado mesmo.

    Silene Mathias.

    ResponderExcluir
  4. De todos os códigos VBA para numeração automática não funcionaram a contento e quando funcionaram não atenderam aos meus requisitos, até hoje, quando encontrei essa codificação.
    Valeu mesmo
    Muito obrigado

    Idevaldo

    ResponderExcluir
  5. Olá boa noite
    Gostaria de saber se tem uma macro/Vba pra enumrar automaticamente uma coluna de forma crescente entre valores determinados sem ter que arrastar fórmulas
    Por exemplo:
    Enumrar a coluna "A" com números sequênciais de 1 a 10
    Ficando assim
    A1 = 1
    A2 = 2
    A3 = 3
    E assim por diante até chegar o número 10
    Sendo que esses valores eu possa alterar quando for preciso
    Poderia me ajudar
    Desde já agradecido

    ResponderExcluir
    Respostas
    1. Olá Wagner!
      Se entendi bem o que vc quer fazer, uma alternativa é utilizar a função 'LIN(A1)'

      Excluir
  6. Exatamente o que eu estava precisando.
    Parabéns pela belíssima postagem.
    Sucesso.

    ResponderExcluir

Seja um participante desta comunidade !
Deixe aqui seu comentário e/ou sugestão.
Obrigado !

Ivair Claudio Ferrari