Numeração Automática no Excel com VBA (Macro)
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.
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).
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 ' 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 '
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).
Compartilhe com seus amigos enviando-lhes e-mails, divulgando nas Redes Sociais, por telefone, falando-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.
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.
Como sempre, excelente matéria e muito bem explicada. Valeu !!!
ResponderExcluirMuito bom ! Sempre quis aprender a fazer isso.
ResponderExcluirObrigado!
Franco Guedes.
Sempre fiz isso manualmente e ocorria erros por repetir alguns números. Com esta macro ficou mais fácil. Obrigado mesmo.
ResponderExcluirSilene Mathias.
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.
ResponderExcluirValeu mesmo
Muito obrigado
Idevaldo
Valeu amigo ! Abraço!
ExcluirIvair
Olá boa noite
ResponderExcluirGostaria 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
Olá Wagner!
ExcluirSe entendi bem o que vc quer fazer, uma alternativa é utilizar a função 'LIN(A1)'
Exatamente o que eu estava precisando.
ResponderExcluirParabéns pela belíssima postagem.
Sucesso.
Obrigado Idemar.
Excluir