3 melhores maneiras de encontrar a última linha e coluna não em branco usando VBA

Índice

Encontrar a última linha e coluna usadas é uma das tarefas básicas e importantes para qualquer automação no Excel usando o VBA. Para compilar planilhas, pastas de trabalho e organizar os dados automaticamente, você deve encontrar o limite dos dados nas planilhas.

Este artigo explicará todos os métodos de localização da última linha e coluna no Excel das maneiras mais fáceis.
1. Encontre a última linha não vazia em uma coluna usando Range.End
Vamos ver o código primeiro. Vou explicar carta.

Sub getLastUsedRow () Dim last_row As Integer last_row = Cells (Rows.Count, 1) .End (xlUp) .Row ‘Esta linha obtém a última linha Debug.Print last_row End Sub

O sub acima encontra a última linha na coluna 1.

Como funciona?
É como ir para a última linha da planilha e pressionar CTRL + atalho PARA CIMA.
Células (Rows.Count, 1): Esta parte seleciona a célula na coluna A. Rows.Count dá 1048576, que geralmente é a última linha na planilha do Excel.

Células (1048576, 1)

.Fim (xlUp): Fim é um método de classe de intervalo que é usado para navegar das folhas até as pontas. xlUp é a variável que indica a direção. Juntos, esse comando seleciona a última linha com dados.

Células (Rows.Count, 1) .End (xlUp)

.Linha : linha retorna o número da linha da célula selecionada. Portanto, obtemos o número da linha da última célula com dados na coluna A. em nosso exemplo, é 8.

Veja como é fácil encontrar as últimas linhas com dados. Este método selecionará a última linha nos dados, independentemente das células em branco antes dela. Você pode ver na imagem que apenas a célula A8 possui dados. Todas as células anteriores estão em branco, exceto A4.

Selecione a última célula com dados em uma coluna
Se você deseja selecionar a última célula na coluna A, basta remover “.row” do final e escrever .select.

Sub getLastUsedRow () Cells (Rows.Count, 1) .End (xlUp) .Selecione ‘Esta linha seleciona a última célula em uma coluna End Sub

O comando “.Select” seleciona a célula ativa.
Pega a coluna de endereço da última célula
Se você deseja obter o endereço da última célula na coluna A, basta remover “.row” do final e escrever .address.

Sub getLastUsedRow () add = Cells (Rows.Count, 1) .End (xlUp) .address ‘Esta linha seleciona a última célula em uma coluna Debug.print add End Sub

The Range.Endereço função retorna o endereço da célula ativa.
Encontrar a última coluna não vazia em uma linha
É quase o mesmo que localizar a última célula não vazia em uma coluna. Aqui estamos obtendo o número da coluna da última célula com dados na linha 4.

Sub getLastUsedCol () Dim last_col As Integer last_col = Cells (4, Columns.Count) .End (xlToLeft) .Column ‘Esta linha obtém a última coluna Debug.Print last_col End Sub


Você pode ver na imagem que ele está retornando o número da coluna da última célula não em branco na linha 4. Que é 4.
Como funciona?

Bem, a mecânica é a mesma que encontrar a última célula com dados em uma coluna. Acabamos de usar palavras-chave relacionadas a colunas.
Selecione o conjunto de dados no Excel usando VBA
Agora sabemos como obter a última linha e a última coluna do Excel usando o VBA. Usando isso, podemos selecionar uma tabela ou conjunto de dados facilmente. Depois de selecionar o conjunto de dados ou tabela, podemos fazer várias operações sobre eles, como copiar, colar, formatar, excluir etc.
Aqui temos um conjunto de dados. Esses dados podem expandir para baixo. Apenas a célula inicial é fixa, que é B4. A última linha e coluna não são fixas. Precisamos selecionar toda a tabela dinamicamente usando vba.

Código VBA para selecionar a tabela com células em branco

Sub select_table () Dim last_row, last_col As Long 'Obtém a última linha last_row = Cells (Rows.Count, 2) .End (xlUp) .Row' Obtém a última coluna last_col = Cells (4, Columns.Count) .End (xlToLeft) .Column 'Seleciona todo o intervalo da tabela (Células (4, 2), Células (last_row, last_col)). Selecione End Sub

Quando você executa isso, a tabela inteira será selecionada em fração de segundo. Você pode adicionar novas linhas e colunas. Ele sempre selecionará todos os dados.

Benefícios deste método:

  1. É fácil. Literalmente, escrevemos apenas uma linha para obter a última linha com os dados. Isso torna tudo mais fácil.
  2. Rápido. Menos linha de código, menos tempo gasto.
  3. Fácil de entender.
  4. Funciona perfeitamente se você tiver uma tabela de dados desajeitada com ponto de partida fixo.

Contras do método Range.End:

  1. O ponto de partida deve ser conhecido.
  2. Você só pode obter a última célula não vazia em uma linha ou coluna conhecida. Quando o seu ponto de partida não for fixo, será inútil. O que é muito menos provável de acontecer.

2. Encontre a última linha usando a função Find ()
Vamos ver o código primeiro.

 Sub last_row () lastRow = ActiveSheet.Cells.Find ("*", searchorder: = xlByRows, searchdirection: = xlPrevious) .Row Debug.Print lastRow End Sub 


Como você pode ver na imagem, esse código retorna a última linha com precisão.
Como funciona?
Aqui usamos a função find para encontrar qualquer célula que contenha qualquer coisa usando o operador curinga "*". O asterisco é usado para encontrar qualquer coisa, texto ou número.

Definimos a ordem de pesquisa por linhas (searchorder: = xlByRows). Também informamos ao excel vba a direção da pesquisa como xlPrevious (searchdirection: = xlPrevious). Faz a função localizar para pesquisar a partir do final da planilha, na linha. Depois de encontrar uma célula que contém qualquer coisa, ele para. Usamos o método Range.Row para buscar a última linha da célula ativa.

Benefícios da função Find para obter a última célula com dados:

  1. Você não precisa saber o ponto de partida. Só leva você à última linha.
  2. Pode ser genérico e pode ser usado para localizar a última célula com dados em qualquer planilha sem nenhuma alteração.
  3. Pode ser usado para localizar qualquer última instância de texto ou número específico na folha.

Contras da função Find ():

  1. É feio Muitos argumentos.
  2. Está lento.
  3. Não pode usar para obter a última coluna não em branco. Tecnicamente, você pode. Mas fica muito lento.

3. Usando a função SpecialCells para obter a última linha
A função SpecialCells com o argumento xlCellTypeLastCell retorna a última célula usada. Vamos ver o código primeiro

Sub spl_last_row_ () lastRow = ActiveSheet.Cells.SpecialCells (xlCellTypeLastCell).Row Debug.Print lastRow End Sub


Se você executar o código acima, obterá o número da linha da última célula usada.

Como funciona?

Este é o equivalente vba do atalho CTRL + End no Excel. Seleciona a última célula usada. Se gravar a macro enquanto pressiona CTRL + End, você obterá este código.

Sub Macro1 () '' Macro1 Macro '' ActiveCell.SpecialCells (xlLastCell) .Selecionar End Sub 

Nós apenas o usamos para obter o número da linha da última célula usada.

Observação: Como eu disse acima, este método retornará a última célula usada e não a última célula com dados. Se você excluir os dados da última célula, o código vba acima ainda retornará a mesma referência de células, já que foi a “última célula usada”. Você precisa salvar o documento primeiro para obter a última célula com dados usando este método.

Exclua planilhas sem prompts de confirmação usando VBA no Microsoft Excel

Adicionar e salvar uma nova pasta de trabalho usando VBA no Microsoft Excel 2016

Exibir uma mensagem na barra de status do Excel VBA

Desativar mensagens de aviso usando VBA no Microsoft Excel 2016

Artigos populares:

A função VLOOKUP no Excel

CONT.SE no Excel 2016

Como usar a função SUMIF no Excel

Você vai ajudar o desenvolvimento do site, compartilhando a página com seus amigos

wave wave wave wave wave