Excel Avanzado

Macros, Vba en Excel y muchos ejemplos de nuestro Curso de Excel Avanzado

Excel Avanzado

Identificar la última fila en uso con VBA

| 15 Comments

¿En qué nos ayudaría identificar la última fila en uso?

Usualmente las bases de datos en Excel tienen mucha información; por eso,  perderiamos tiempo buscando el último dato con la barra de desplazamiento.
Sin embargo, esto se puede solucionar, haciendo uso de las macros.

¿Qué código podemos usar para buscar la última fila?

Sub BuscarUltimaFila()

Dim ult As Integer
ult = Cells(Rows.Count, 1).End(xlUp).Row
MsgBox ult

End Sub

Ahora entendamos el código:

Cells(Rows.Count,1) = Al usar Rows.Count estamos contando todas las filas disponibles en excel cuyo valor seria 1048576. Como lo usamos en un Cells, estaremos seleccionando la fila 1048576. El “1” indica la columna en la cuál se esta trabajando (“A”) .

End(xlUp) = Estamos indicando que desde la fila indicada (1048576), “suba” hasta que encuentre un valor.

Row = Indicamos que grabe el número de la fila ocupada encontrada.

MsgBox ult = Mostramos ese valor en un cuadro de texto.

Seleccionar esa última fila

Ahora, si queremos seleccionar esa celda podemos agregar el siguiente código:

Sub BuscarUltimaFila()

Dim n As Long
countult = Cells(Rows.Count, 1).End(xlUp).Row
MsgBox countult
Cells(Rows.Count, 1).End(xlUp).Select

End Sub

Como podemos observar, en vez de .Row , le ponemos .Select

Última fila libre

Alternativamente, si queremos buscar la última fila libre, haremos uso del Offset:

Sub BuscarUltimaFila()

Dim n As Long
countult = Cells(Rows.Count, 1).End(xlUp).Offset(1,0).Row
MsgBox countult
Cells(Rows.Count, 1).End(xlUp).Offset(1,0).Select

End Sub

Con Offset(1,0) , al encontrar la última fila en uso, saltamos 1 fila más la cual sería la última fila libre.

Descargar ejemplos de identificación de última fila

——————

Elaborado por: Daniel Eduardo Espinoza Rodriguez

15 Comments

  1. Excelente aporte.
    Ejemplo de mucha utilidad en programación. Seguro lo voy a utilizar constantemente.

  2. Ante todo gracias por este maravilloso ejemplo.

    Esta rutina me interesa:

    Sub BuscarUltimaFila()
    Dim n As Long
    countult = Cells(Rows.Count, 1).End(xlUp).Row
    MsgBox countult
    Cells(Rows.Count, 1).End(xlUp).Select
    End Sub

    Pero tengo una duda. Supongamos que la ultima fila es la 20 y quiero hacer una selección de B20:M20 que tendria que incluir en el código??

    Gracias.

    • Perdón, me respondo a mi mismo…

      Sub BuscarUltimaFila()

      Dim n As Long
      countult = Cells(Rows.Count, 2).End(xlUp).Row
      Range(“B” & countult & “:M” & countult).Select

      End Sub

  3. muy util para trabajar con base de datos se podria agregar codigo para ordenar la lista

  4. Hola, estuve viendo estos codigo, parece ser muy util. pero tengo una gran duda: el codigo va en un formulario form de Vb 6.0? digo porque no se como hacer que ese codigo responda si primero no se establece una conexión con el archivo excel.. o sea esa conexion como es que se hace, si es que es ncesario.. Disculpe mi ignorancia..

  5. El delimitar el rango hasta la ultima celda con datos, ayuda mucho sobre todo cuando se analiza y cruza información entre varias tablas y una de ellas varia constantemente en cuanto a nro de registros. Antes de conocer esta opcion de VBA solia considerar rangos muy largos y el resultado a la vista no era lo deseado, aunque para mi trabajo era suficiente, sin embargo ahora que debo compartir ese proyecto es oportuno el uso de esta función.

  6. La rutina no es completa. Solo ubica la ultima celda del columna A. ¿Que pasa si en las columnas B, C y en adelante hay datos pero no en la 1?.

    • Hola Roger

      Efectivamente la rutina se basa en la columna A, … tal como lo en realidad lo veo … si necesito que se base en la columna B, lo cambiaría para que funcione en la B, solo cambiaría el código por aquella columna cuyo dato sea obligatorio …. si de todas formas necesitas basarte en todo el cuadro, asumiendo que no tienes otro contenido que interfiera con tu cuadro, podrías usar: specialcells

      http://msdn.microsoft.com/en-us/library/office/ff196157(v=office.15).aspx

      En este caso se suma la complejidad que si usas xlCellTypeVisible pues tendrías que grabar antes de hacer tu cálculo, y no siempre va a ser conveniente tener que estar grabando cada vez que tengas que hacer el cálculo

  7. Excelente aporte, pero me surge una duda.

    Si tenemos una tabla delimitada por el rango A1:C15 la cual por alguna razón no se llena, digamos que el último valor en la tabla está en la celda A10, con el código, el valor que nos trae sería 15 pero no es cierto, tendría que ser el 10 porque en esa fila es donde se encuentra nuestro último dato.

    ¿Cómo podemos resolver este caso? Espero haberme dado a entender.

    Saludos.

  8. Hugo, yo tengo el mismo problema. Quiero seleccionar la ultima fila llena que empieza en la columna C.
    Yo querrIa ir a la ultima fila que tiene datos en la columna C.
    Como ubicarme.
    Ademas los datos se estan pasando desde un bucle y aún estan en memmoria, funciona igulamente?

  9. Para Hugo. Desconozco que función hace en ese código la variable n (long).

  10. Buen aporte,
    pero tengo uan duda espero puedan ayudarme, tengo un formulario de VB en excel, lo que deseo es que me capture el ultimo codigo y le aumente en una unidad, por ejemplo tengo mi registron productos y en ultio tiene codigo C00458, al agregar uno nuevo que tome como referencia este ultimo codigo y solo le aumente una unidad es decir en el campo codigo del nuevo registro salga C00459, gracias… Ah, solo me bastaria ver el dato de la coumna A

  11. Tengo entendido que offset es como un manipulador de cursores direccionales, esta función me parece muy útil, en mi caso yo registro en una hoja a parte datos de historias clínicas y siempre se me hizo difícil ubicar la última posición libre de una fila para ingresar una nueva historia clínica…excelente.

  12. como seria para la detectar la ultima columna?

  13. Excelente. Gracias.
    Una consulta, si estoy a tiempo, yo tengo una tabla y me interesa después de salir de Datos Filtrados, poderle dar a un botón y que se me vaya a la última fila, pero se me va a la última fila de la tabla.
    ¿Cómo lo puedo hacer?

Deja un comentario

Required fields are marked *.


Excel Avanzado located at , Lima, Perú . Reviewed by usuarios rated: 4.7 / 5