3 mejores maneras de encontrar la fila no esté en blanco y Última columna usando VBA
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.
¿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)
Juntos, este comando selecciona la última fila con datos.
Cells(Rows.Count, 1).End(xlUp)
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
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.
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.
Beneficios de este método:
-
Es fácil. Literalmente escribimos solo una línea para obtener la última fila con datos.
Esto lo hace fácil.
-
Rápido. Menos línea de código, menos tiempo.
-
Fácil de entender.
-
Funciona perfectamente si tiene una tabla de datos torpe con un punto de partida fijo.
Contras del método Range.End:
-
Debe conocerse el punto de partida.
-
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
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:
-
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.
-
Se puede utilizar para encontrar cualquier último ejemplar de texto o número específico en la hoja.
Contras de la función Find ():
-
Es feo. Demasiados argumentos.
-
Es lento.
-
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
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]