Como numerar automaticamente as linhas se a célula adjacente não estiver em branco no Excel?

No Excel, usar o controle de preenchimento para criar manualmente uma série de números é uma forma comum de gerar números de série ou índices para listas. No entanto, muitas vezes há situações em que você só deseja numerar as linhas se uma célula adjacente específica contiver dados. Por exemplo, pode ser necessário gerar automaticamente números de linha em uma lista, mas pular a numeração onde as células de dados adjacentes estão vazias. Além disso, você pode esperar que esses números sejam atualizados instantaneamente à medida que os dados são inseridos ou removidos — fornecendo uma sequência atualizada o tempo todo, sem intervenção manual.
Numerar linhas automaticamente com fórmula se a célula adjacente não estiver em branco
Numerar linhas automaticamente com código VBA se a célula adjacente não estiver em branco
Numerar linhas automaticamente com fórmula se a célula adjacente não estiver em branco
Uma maneira eficiente de alcançar a numeração dinâmica de linhas com base nos valores das células adjacentes é usar uma fórmula do Excel. Com essa abordagem, os números das linhas serão exibidos apenas quando a célula adjacente contiver um valor. Quando você adicionar ou excluir dados nessas células, a numeração será atualizada automaticamente para corresponder. Aqui está um método prático que você pode usar:
1. Selecione a célula onde deseja que a numeração comece (por exemplo, A2 se seus dados começarem em B2). Insira a seguinte fórmula:
=IF(B2<>"",COUNTA($B$2:B2),"")
2. Em seguida, arraste a alça de preenchimento para baixo ao longo dos seus dados para aplicar essa fórmula às outras linhas. A numeração será ajustada automaticamente, exibindo números apenas para as linhas onde os dados estão presentes na coluna B.
Se você enfrentar problemas onde os números não se atualizam conforme o esperado, confirme que a fórmula foi copiada para todas as linhas relevantes e que não há células mescladas ou validações de dados interferindo no seu intervalo. Lembre-se de que as fórmulas dependem de referências precisas e podem ser interrompidas por mudanças estruturais na planilha.
Numerar linhas automaticamente com código VBA se a célula adjacente não estiver em branco
Para usuários mais avançados, ou em casos em que você prefira não aplicar fórmulas em toda a sua planilha — ou precise que a numeração seja atualizada mesmo ao colar dados, remover blocos ou fazer alterações frequentes — uma macro VBA oferece uma alternativa interessante. Usando VBA, você pode atualizar automaticamente os números das linhas em uma coluna sempre que a célula adjacente for editada, sem a necessidade de fórmulas. Isso é ideal para formulários de entrada de dados, registros de importação ou listas de tarefas com alterações frequentes de layout.
1. Pressione Alt + F11 para abrir a janela do editor do Visual Basic for Applications. No Explorador de Projetos, localize sua pasta de trabalho, depois clique duas vezes na planilha relevante (por exemplo, “Planilha1”) em “Objetos do Microsoft Excel”.
2. Na janela de código que aparece, cole o seguinte código. Este exemplo assume que você deseja numerar as linhas na coluna A com base em se a coluna B não está em branco; você pode ajustar as referências para o seu intervalo específico, se necessário:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim chk As Range
Set chk = Intersect(Target, Me.Columns("B"))
If chk Is Nothing Then Exit Sub
Application.EnableEvents = False
Call RenumberNonBlank(Me, "B", "A", 2)
Application.EnableEvents = True
End Sub
Sub RenumberNonBlank(ws As Worksheet, _
keyCol As String, _
numCol As String, _
firstDataRow As Long)
Dim lastRow As Long
Dim r As Long
Dim seq As Long
lastRow = ws.Cells(ws.Rows.Count, keyCol).End(xlUp).Row
seq = 1
For r = firstDataRow To lastRow
With ws
If Trim(.Cells(r, keyCol).Value) <> "" Then
.Cells(r, numCol).Value = seq
seq = seq + 1
Else
.Cells(r, numCol).ClearContents
End If
End With
Next r
End Sub
3. Salve e feche o editor VBA. Agora, sempre que você adicionar, editar ou limpar conteúdo na coluna B, a coluna A será renumerada imediatamente, refletindo a presença (ou ausência) de dados. A sequência será ajustada para cima ou para baixo à medida que você adicionar ou remover entradas na coluna B.
Notas e Precauções: Esta macro deve ser colocada especificamente na janela de código da planilha desejada (não em um módulo ou ThisWorkbook) para responder às edições de células. Além disso, certifique-se de que as macros estão habilitadas nas configurações do Excel para que o código funcione. Se o "intervalo de dados" mudar para colunas diferentes de A e B, atualize as referências Set chk = Intersect(Target, Me.Columns("B"))
e Call RenumberNonBlank(Me, "B", "A", 2)
de acordo.
Solução de problemas: Se a numeração não for atualizada, verifique novamente se você está editando a planilha correta e se o código está colocado na janela de código da planilha apropriada. Além disso, certifique-se de ter salvo a pasta de trabalho como um arquivo habilitado para macro (.xlsm). Para erros inesperados, verifique novamente se você não alterou a estrutura da sua planilha, como células mescladas ou dados nas linhas do cabeçalho.
Melhores Ferramentas de Produtividade para Office
Potencialize suas habilidades no Excel com o Kutools para Excel e experimente uma eficiência sem igual. O Kutools para Excel oferece mais de300 recursos avançados para aumentar sua produtividade e economizar tempo. Clique aqui para obter o recurso que você mais precisa...
O Office Tab traz interface com abas para o Office e facilita muito o seu trabalho
- Habilite a edição e leitura com abas no Word, Excel, PowerPoint, Publisher, Access, Visio e Project.
- Abra e crie vários documentos em novas abas na mesma janela, em vez de abrir novas janelas.
- Aumente sua produtividade em50% e reduza centenas de cliques do mouse todos os dias!