3 mejores formas de encontrar la última fila y columna que no estén en blanco usando VBA

Anonim

Encontrar la última fila y columna utilizada es una de las tareas básicas e importantes para cualquier automatización en Excel usando VBA. Para compilar hojas, libros de trabajo y organizar datos automáticamente, debe encontrar el límite de los datos en las hojas.

Este artículo explicará todos los métodos para encontrar la última fila y columna en Excel de la manera más sencilla.
1. Busque la última fila que no esté en blanco en una columna usando Range.End
Primero veamos el código. Te lo explicaré carta.

Sub getLastUsedRow () Dim last_row As Integer last_row = Cells (Rows.Count, 1) .End (xlUp) .Row ‘Esta línea obtiene la última fila Debug.Print last_row End Sub

El sub anterior encuentra la última fila en la columna 1.

¿Cómo funciona?
Es como ir a la última fila de la hoja y luego presionar el atajo CTRL + ARRIBA.
Celdas (Rows.Count, 1): Esta parte selecciona la celda en la columna A. Rows.Count da 1048576, que suele ser la última fila en la hoja de Excel.

Celdas (1048576, 1)

.Fin (xlUp): End es un método de clase de rango que se usa para navegar en hojas hasta los extremos. xlUp es la variable que indica la dirección. Juntos, este comando selecciona la última fila con datos.

Celdas (Rows.Count, 1) .End (xlUp)

.Hilera : fila devuelve el número de fila de la celda seleccionada. Por lo tanto, obtenemos el número de fila de la última celda con datos en la columna A. En nuestro ejemplo, es 8.

Vea lo fácil que es encontrar las últimas filas con datos. Este método seleccionará la última fila en los datos independientemente de las celdas en blanco anteriores. Puedes ver que en la imagen solo la celda A8 tiene datos. Todas las celdas anteriores están en blanco excepto A4.

Seleccione la última celda con datos en una columna
Si desea seleccionar la última celda en la columna A, simplemente elimine “.row” del final y escriba .select.

Sub getLastUsedRow () Cells (Rows.Count, 1) .End (xlUp) .Select "Esta línea selecciona la última celda de una columna End Sub

El comando ".Select" selecciona la celda activa.
Obtener la columna de dirección de la última celda
Si desea obtener la dirección de la última celda en la columna A, simplemente elimine ".row" del final y escriba .address.

Sub getLastUsedRow () add = Cells (Rows.Count, 1) .End (xlUp) .address ‘Esta línea selecciona la última celda de una columna Debug.print add End Sub

El rango.Dirección La función devuelve la dirección de la celda activa.
Buscar la última columna que no esté en blanco en una fila
Es casi lo mismo que buscar la última celda que no esté en blanco en una columna. Aquí obtenemos el número de columna de la última celda con datos en la fila 4.

Sub getLastUsedCol () Dim last_col As Integer last_col = Cells (4, Columns.Count) .End (xlToLeft) .Column ‘Esta línea obtiene la última columna Debug.Print last_col End Sub


Puede ver en la imagen que está devolviendo el número de columna de la última celda que no está en blanco en la fila 4. Que es 4.
¿Cómo funciona?

Bueno, la mecánica es la misma que encontrar la última celda con datos en una columna. Acabamos de utilizar palabras clave relacionadas con columnas.
Seleccione el conjunto de datos en Excel usando VBA
Ahora sabemos cómo obtener la última fila y la última columna de Excel usando VBA. Usando eso podemos seleccionar una tabla o conjunto de datos fácilmente. Después de seleccionar el conjunto de datos o la tabla, podemos realizar varias operaciones en ellos, como copiar y pegar, formatear, eliminar, etc.
Aquí tenemos un conjunto de datos. Estos datos pueden expandirse hacia abajo. Solo la celda inicial es fija, que es B4. La última fila y columna no está fija. Necesitamos seleccionar toda la tabla dinámicamente usando vba.

Código de VBA para seleccionar una tabla con celdas en blanco

Sub select_table () Dim last_row, last_col As Long 'Obtiene la última fila last_row = Cells (Rows.Count, 2) .End (xlUp) .Row' Obtiene la última columna last_col = Cells (4, Columns.Count) .End (xlToLeft) .Columna 'Seleccione el rango completo de la tabla (celdas (4, 2), celdas (última fila, última columna)). Seleccione End Sub

Cuando ejecute esto, la tabla completa se seleccionará en una fracción de segundo. Puede agregar nuevas filas y columnas. Siempre seleccionará todos los datos.

Beneficios de este método:

  1. Es fácil. Literalmente escribimos solo una línea para obtener la última fila con datos. Esto lo hace fácil.
  2. Rápido. Menos línea de código, menos tiempo.
  3. Fácil de entender.
  4. Funciona perfectamente si tiene una tabla de datos torpe con un punto de partida fijo.

Contras del método Range.End:

  1. Debe conocerse el punto de partida.
  2. Solo puede obtener la última celda que no esté en blanco en una fila o columna conocida. Cuando su punto de partida no sea fijo, será inútil. Lo que es menos probable que suceda.

2. Encuentre la última fila usando la función Find ()
Primero veamos el código.

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


Como puede ver en la imagen, este código devuelve la última fila con precisión.
¿Cómo funciona?
Aquí usamos la función de búsqueda para encontrar cualquier celda que contenga cualquier cosa usando el operador comodín "*". El asterisco se usa para encontrar cualquier cosa, texto o número.

Establecemos el orden de búsqueda por filas (orden de búsqueda: = xlByRows). También le decimos a Excel vba la dirección de búsqueda como xlPrevious (searchdirection: = xlPrevious). Hace que la función de búsqueda busque desde el final de la hoja, por filas. Una vez que encuentra una celda que contiene algo, se detiene. Usamos el método Range.Row para buscar la última fila de la celda activa.

Beneficios de la función Buscar para obtener la última celda con datos:

  1. No es necesario que conozca el punto de partida. Solo te lleva a la última fila.
  2. Puede ser genérico y se puede utilizar para buscar la última celda con datos en cualquier hoja sin ningún cambio.
  3. Se puede utilizar para encontrar cualquier último ejemplar de texto o número específico en la hoja.

Contras de la función Find ():

  1. Es feo. Demasiados argumentos.
  2. Es lento.
  3. No se puede usar para obtener la última columna que no esté en blanco. Técnicamente, puedes. Pero se vuelve demasiado lento.

3. Uso de la función SpecialCells para obtener la última fila
La función SpecialCells con el argumento xlCellTypeLastCell devuelve la última celda utilizada. Veamos el código primero

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


Si ejecuta el código anterior, obtendrá el número de fila de la última celda utilizada.

¿Cómo funciona?

Este es el equivalente vba del atajo CTRL + Fin en Excel. Selecciona la última celda utilizada. Si graba la macro mientras presiona CTRL + Fin, obtendrá este código.

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

Lo usamos para obtener el número de fila de la última celda utilizada.

Nota: Como dije anteriormente, este método devolverá la última celda utilizada, no la última celda con datos. Si elimina los datos en la última celda, el código vba anterior seguirá devolviendo la misma referencia de celdas, ya que fue la "última celda utilizada". Primero debe guardar el documento para obtener la última celda con datos utilizando este método.

Elimine hojas sin mensajes de confirmación usando VBA en Microsoft Excel

Agregar y guardar un nuevo libro de trabajo usando VBA en Microsoft Excel 2016

Mostrar un mensaje en la barra de estado de Excel VBA

Desactive los mensajes de advertencia con VBA en Microsoft Excel 2016

Articulos populares:

La función BUSCARV en Excel

CONTAR.SI en Excel 2016

Cómo usar la función SUMIF en Excel