¿Cómo se puede encontrar automáticamente la última celda que contiene datos en Excel?

Desventajas del .End(xlUp) Method

  • Si hay una celda en blanco en el medio de los datos, el resultado puede ser inexacto porque VBA se detendrá antes de llegar a los últimos datos reales.
  • Si se combina alguna celda, es posible que este método no funcione bien porque Excel considera las celdas combinadas como una sola unidad.

3. Encontrar la última columna con datos usando .End(xlToLeft)

El  método .End(xlToLeft) en Excel VBA trabaja para encontrar la última columna que contiene datos en una fila específica.

Funciona de manera similar a presionar Ctrl + ← (flecha izquierda) en Excel:

  • Comience en la columna más a la derecha de la fila.
  • Muévase a la izquierda hasta que encuentre la última columna con datos.
  • Genera el número de columnas en las que se encontraron los datos por última vez.

Ejemplo de código VBA para buscar la última columna

El siguiente código encontrará  la última columna que tiene los datos en la primera fila de la hoja de cálculo “Hoja1”:

Sub FindingLastColumn()
    Dim ws As Worksheet
    Dim LastCol As Long
    Set ws = ThisWorkbook.Worksheets(“Sheet1”)

    ' Finds the last column that has data in the first row
    LastCol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column

    ' Displays results in Immediate Window
    Debug.Print “Last Column with Data: “ & LastCol
End Sub

Ventajas del .End(xlToLeft) Method

  • Es genial encontrar la última columna que contiene los datos en la tabla.
  • Es fácil de usar sin requerir una gran cantidad de código.
  • Puede ayudar a encontrar el encabezado o la sección de un informe automatizado.

Desventajas del .End(xlToLeft) Method

  • Si hay columnas vacías entre los datos, este método se detendrá antes de llegar a la última columna real.
  • Al igual que en .End(xlUp), este método no tiene en cuenta las columnas combinadas.

4. Uso  de Find para detectar con precisión las últimas células llenadas

El método Find de Excel VBA es una de las formas más eficaces y adecuadas de encontrar la última fila o columna que tiene datos en una hoja de cálculo.

A diferencia de .End(xlUp), que solo funciona en una columna, el método Find puede buscar la última celda en toda el área de la hoja de cálculo, tanto filas como columnas.

Este método es especialmente beneficioso cuando se trabaja con conjuntos de datos complejos, hay celdas ocultas (hidden rows/columns) o celdas que contienen fórmulas. También es adecuado para conjuntos de datos irregulares.

Ejemplo de código VBA para encontrar la última línea que contiene datos

El código siguiente buscará la última fila que tiene datos en una hoja de cálculo determinada mediante el método Find :

Sub FindingLastRow()
    Dim ws As Worksheet
    Dim LastRow As Long
    Set ws = ThisWorkbook.Worksheets(“Sheet1”)

    ' Finds the last row that has data
    On Error Resume Next
    LastRow = ws.Cells.Find(What:=“*”, _
                            After:=ws.Range(“A1”), _
                            Lookat:=xlPart, _
                            LookIn:=xlFormulas, _
                            ' SearchOrder:=xlByColumns, _
                            SearchOrder:=xlByRows, _
                            SearchDirection:=xlPrevious, _
                            MatchCase:=False).Row
    On Error GoTo 0

    ' Displays results in Immediate Window
    Debug.Print “Last Row with Data: “ & LastRow
End Sub

Utilice SearchOrder:=xlByColumns para realizar una búsqueda por columna.

Artículos más recientes