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 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 ‘This line gets the last row

Debug.Print last_row

End Sub

El sub de arriba encuentra la última fila en la columna 1.

image

¿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.

Cells(1048576, 1)
End (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.

Cells(Rows.Count, 1).End(xlUp)
Row: row 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 ‘This line selects the last cell in a column

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 ‘This line selects the last cell in a column

Debug.print add

End Sub

La función Range.Address * 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 ‘This line gets the last column

Debug.Print last_col

End Sub

image

Puede ver en la imagen que devuelve 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.

Seleccionar conjunto de datos en Excel usando VBA

Ahora sabemos cómo obtener la última fila y la última columna de Excel usando VBA.

Con eso podemos seleccionar una tabla o conjunto de datos fácilmente. Después de seleccionar el conjunto de datos o la tabla, podemos hacer varias operaciones en ellos, como copiar y pegar, formatear, borrar, 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.

image

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

Sub select_table()

Dim last_row, last_col As Long

'Get last row

last_row = Cells(Rows.Count, 2).End(xlUp).Row

'Get last column

last_col = Cells(4, Columns.Count).End(xlToLeft).Column

'Select entire table

Range(Cells(4, 2), Cells(last_row, last_col)).Select

End Sub

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

image

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.

  1. Rápido. Menos línea de código, menos tiempo.

  2. Fácil de entender.

  3. 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. Encuentra 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

image

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.

We set search order by rows (searchorder:=xlByRows). We also tell excel vba the direction of search as xlPrevious (searchdirection:=xlPrevious). It makes find function to search from end of the sheet, row wise.

Once it find a cell that contains anything, it stops. We use the Range.Row method to fetch last row from active cell.

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

  1. No es necesario que conozca el punto de partida. Solo te da la última fila. . Puede ser genérico y se puede utilizar para buscar la última celda con datos en cualquier hoja sin ningún cambio.

  2. 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. Usando 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

image

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).Select

End Sub

Solo 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.

Artículos relacionados:

link: / files-workbook-and-worksheets-in-vba-delete-sheets-without-confirm-prompts-using-vba-in-microsoft-excel [Eliminar hojas sin mensajes de confirmación usando VBA en Microsoft Excel]

link: / files-workbook-and-worksheets-in-vba-add-and-save-new-workbook-using-vba-in-microsoft-excel [Add And Save New Workbook Using VBA In Microsoft Excel 2016]

link: / menus-toolbars-status-bar-in-vba-display-a-message-on-the-statusbar-using-vba-in-microsoft-excel [Mostrar un mensaje en la barra de estado de Excel VBA]

link: / general-topics-in-vba-turn-off-warning-messages-using-vba-in-microsoft-excel [Desactivar mensajes de advertencia usando VBA en Microsoft Excel 2016]

Artículos populares:

enlace: / fórmulas-y-funciones-introducción-de-vlookup-function [La función VLOOKUP en Excel]

enlace: / tips-countif-in-microsoft-excel [COUNTIF en Excel 2016]

link: / excel-formula-and-function-excel-sumif-function [Cómo usar la función SUMIF en Excel]