¿Cómo puedo encontrar la última fila que contiene datos en una columna específica?

Resuelto Lipis asked hace 16 años • 14 respuestas

¿Cómo puedo encontrar la última fila que contiene datos en una columna específica y en una hoja específica?

Lipis avatar Sep 16 '08 17:09 Lipis
Aceptado

Qué tal si:

Function GetLastRow(strSheet, strColumn) As Long
    Dim MyRange As Range

    Set MyRange = Worksheets(strSheet).Range(strColumn & "1")
    GetLastRow = Cells(Rows.Count, MyRange.Column).End(xlUp).Row
End Function

Con respecto a un comentario, esto devolverá el número de fila de la última celda incluso cuando solo una celda de la última fila tenga datos:

Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
Fionnuala avatar Sep 16 '2008 11:09 Fionnuala

Deberías usar .End(xlup)pero en lugar de usar 65536 quizás quieras usar:

sheetvar.Rows.Count

De esa manera funciona para Excel 2007, que creo que tiene más de 65536 filas.

Jon Fournier avatar Sep 16 '2008 15:09 Jon Fournier

Sencillo y rápido:

Dim lastRow as long
Range("A1").select
lastRow = Cells.Find("*",SearchOrder:=xlByRows,SearchDirection:=xlPrevious).Row

Uso de ejemplo:

cells(lastRow,1)="Ultima Linha, Last Row. Youpi!!!!"

'or 

Range("A" & lastRow).Value = "FIM, THE END"
user2988717 avatar Aug 26 '2014 15:08 user2988717
function LastRowIndex(byval w as worksheet, byval col as variant) as long
  dim r as range

  set r = application.intersect(w.usedrange, w.columns(col))
  if not r is nothing then
    set r = r.cells(r.cells.count)

    if isempty(r.value) then
      LastRowIndex = r.end(xlup).row
    else
      LastRowIndex = r.row
    end if
  end if
end function

Uso:

? LastRowIndex(ActiveSheet, 5)
? LastRowIndex(ActiveSheet, "AI")
GSerg avatar Sep 16 '2008 11:09 GSerg
Public Function LastData(rCol As Range) As Range    
    Set LastData = rCol.Find("*", rCol.Cells(1), , , , xlPrevious)    
End Function

Uso:?lastdata(activecell.EntireColumn).Address

Dick Kusleika avatar Sep 16 '2008 16:09 Dick Kusleika