Lección 11: Buscar la primera y última fila o columna usando una macro.

Escrito por Administrador

15 de septiembre de 2021

En esta lección, vas a aprender a buscar la primera y última fila o columna con datos de una tabla usando una macro, algo ciertamente importante para conocer el rango de datos y poder automatizar procesos.

En primer lugar, la sintaxis del comando que usaremos para filas es la siguiente:

h = Cells(Rows.Count, 1).End(xlUp).Offset(0, 0).Row

Y, para columnas:

h = Cells(1, Columns.Count).End(xlToLeft).Offset(0, 0).Column

Primero, vamos a analizar la sintaxis del comando para filas.

En realidad, este comando lo que hace es asignar a la variable h el número de la última fila que tiene la primera columna rellena.

Para ello, Rows.Count se refiere a la última fila de una hoja Excel, la 65536. De esta manera, estamos apuntando a la celda (65536,1), es decir, a la fila 65536, columna A.

h = Cells(Rows.Count, 1).End(xlUp).Offset(0, 0).Row

De hecho, si quisiéramos buscar desde la fila 280, solo tendríamos que escribir:

h = Cells(280, 1).End(xlUp).Offset(0, 0).Row

Mientras, la segunda parte del comando, comienza a mirar desde la celda a la que hemos apuntado antes, hacia arriba, y va recorriendo todas las filas de la columna A hasta que encuentra una celda con datos. De esta forma, hemos encontrado la celda que estábamos buscando, la primera fila con datos de la columna A.

h = Cells(Rows.Count, 1).End(xlUp).Offset(0, 0).Row

En caso contrario, si quisiéramos buscar la última fila de la columna A usando una macro, escribiríamos: xlDown.

Del mismo modo, para columnas; xlToLeft o xlToRight.

Por último, la tercera parte del comando, suma al resultado anterior el número de filas o columnas que le indiquemos. En este caso, no le sumaríamos ninguna, y el resultado de la variable h sería simplemente el número de la última fila que contiene datos de la columna A.

h = Cells(Rows.Count, 1).End(xlUp).Offset(0, 0).Row

Así mismo, si quisieras guardar en h el número de la primera fila libre después de la tabla, solo tendrías que sumar una fila al resultado de la búsqueda anterior, y escribirías:

h = Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row

Finalmente, decirte que todo lo visto es extensible al comando para trabajar con columnas

h = Cells(1, Columns.Count).End(xlToLeft).Offset(0, 0).Column

Seguramente vamos a entender todo esto mejor con unos cuantos ejemplos en los que veremos como buscar la primera y última fila o columna usando una macro.

En primer lugar, crea un libro nuevo, abre el editor VBA e inserta 7 módulos. Después, copia las siguientes macros en ellos.

 

Macro 1. Buscar la primera fila con datos.

Sub Leccion11_1()

'Macro que localiza la primera fila con datos de la columna G (columna 7)

'En la columna G buscamos desde la fila 1 hacia abajo la primera fila con datos que se encuentre

h = Cells(1, 7).End(xlDown).Offset(0, 0).Row   

'Escribimos el número de esa fila en la celda N25           

Cells(25, "N").Value = h               

'Marcamos la celda encontrada con contorno rojo                       

Cells(h, "G").BorderAround _
ColorIndex:=3                                                             

End Sub

Macro 2. Buscar la última fila con datos.

Sub Leccion11_2()

'Macro que localiza la última fila con datos de la columna G (columna 7)

'En la columna G buscamos desde la fila 65536 hacia arriba la primera fila con datos que se encuentre

h = Cells(Rows.Count, 7).End(xlUp).Offset(0, 0).Row    

'Escribimos el número de esa fila en la celda N27           

Cells(27, "N").Value = h        

'Marcamos la celda encontrada con contorno azul                                                     

Cells(h, "G").BorderAround _
ColorIndex:=5                                                            

End Sub

Macro 3. Buscar la última fila con datos.

Sub Leccion11_3()

'Macro que localiza la última fila con datos de la columna H (columna 8)

'En la columna H buscamos desde la fila 65536 hacia arriba la primera fila con datos que se encuentre

h = Cells(Rows.Count, 8).End(xlUp).Offset(0, 0).Row  

'Escribimos el número de esa fila en la celda N29          

Cells(29, "N").Value = h            

'Marcamos la celda encontrada con contorno verde                                  

Cells(h, "H").BorderAround _
ColorIndex:=10                                                          

End Sub

Macro 4. Buscar la primera columna con datos.

Sub Leccion11_4()

'Macro que localiza la primera columna con datos de la fila 12

'En la fila 12 buscamos desde la columna 1 hacia la derecha la primera columna con datos que se encuentre

h = Cells(12, 1).End(xlToRight).Column   

'Escribimos el número de esa columna en la celda N31             

Cells(31, "N").Value = h    

'Marcamos la celda encontrada con contorno violeta                                               

Cells(12, h).BorderAround _
ColorIndex:=7                                                            

End Sub

Macro 5. Buscar la última columna con datos.

Sub Leccion11_5()

'Macro que localiza la última columna con datos de la fila 9

'En la fila 9 buscamos desde la última columna de la hoja de cálculo hacia la izquierda la primera columna con datos que se encuentra

h = Cells(9, Columns.Count).End(xlToLeft).Column       

'Escribimos el número de esa columna en la celda N33

Cells(33, "N").Value = h    

'Marcamos la celda encontrada con contorno amarillo                                            

Cells(9, h).BorderAround _
ColorIndex:=6                                                            

End Sub

Macro 6. Buscar primera fila sin datos.

Sub Leccion11_6()

'Macro que localiza la primera fila sin datos en la columna G después de la tabla

'En la columna G buscamos desde la fila 65536 hacia arriba la primera fila con datos que se encuentre, que será la última de la tabla, y le suma una fila

h = Cells(Rows.Count, 7).End(xlUp).Offset(1, 0).Row                    

'Escribimos el número de esa fila en la celda N35

Cells(35, "N").Value = h                                                          

'Marcamos la celda encontrada con contorno naranja

Cells(h, "G").BorderAround _
ColorIndex:=46                                                          

End Sub

Macro 7. Restablecer el formato de la tabla.

Sub Leccion11_7()

'Macro que restablece el formato de la tabla

'Borramos el contenido de las celdas del rango N25-N36

Range("N25:N36").ClearContents              

'Sin bordes                       

Range("G8:H23").Borders.LineStyle = xlNone  

'Estos tres comandos reestablecen la cuadrícula de la hoja excel          

Range("G8:H23").Interior.Pattern = xlNone                    

Range("G8:H23").Interior.TintAndShade = 0                   

Range("G8:H23").Interior.PatternTintAndShade = 0                    

End Sub

Seguidamente, crea siete botones y asociales las macros anteriores. Después, rellena la hoja como aparece en la figura.

Probablemente, te interese este enlace donde explico cómo asignar macros a botones.

total-operaciones-matematicas-macros

A continuación, ejecuta la primera macro para encontrar la primera fila de la columna G que contiene datos. Como resultado, el número de la fila aparecerá en la casilla marcada de rojo y además, la celda aparecerá con un borde alrededor del mismo color.

total-operaciones-matematicas-macros

De igual forma, seguimos ejecutando macros hasta la sexta incluida, resultando una figura como la siguiente:

total-operaciones-matematicas-macros

Además, se ha incluido la séptima macro que restablecerá la hoja de cálculo para volver a ejecutar las macros si se desea.

Con esto llegamos al final de la undécima lección, en la que has aprendido a buscar la primero y última fila o columna con datos de una tabla usando una macro.

Finalmente, desear que te esté gustando el curso y pedirte que me plantees cualquier duda que te surja. También, puedes proponerme macros que te interese desarrollar y las voy incluyendo en el temario. De hecho, soy todo oídos. Nos vemos en el próximo capítulo.

Descarga el archivo del ejemplo

« L10. Filtrar y ordenar datos con macros.

L12. Condicionales en macros (1). »

Por favor, ayúdame y haz clic en el anuncio 😉



0 comentarios

Enviar un comentario

Tu dirección de correo electrónico no será publicada.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Quizá te interese,

Contacto