Eliminar o Insertar Filas en Función del Valor de la Celda

Written by

Editorial Team

Reviewed by

Steve Rynearson

Translated by

Dennis Madrid

Last updated on agosto 17, 2023

Este tutorial mostrará cómo eliminar o insertar filas basándose en los valores de las celdas.

Eliminar Fila Basado en el Valor de la Celda

Esto recorrerá un rango y eliminará filas si la columna A dice “eliminar”.

Sub EliminarFilasBasadoEnValorDeCelda()

    'Declarar variables
    Dim LastRow As Long, FirstRow As Long
    Dim Row As Long
    
    With ActiveSheet
        'Definir la primera y la última fila
        FirstRow = 1
        LastRow = .UsedRange.Rows(.UsedRange.Rows.Count).Row
    
        'Bucle a través de filas (de abajo a arriba)
        For Row = LastRow To FirstRow Step -1
            If .Range("A" & Row).Value = "eliminar" Then
                .Range("A" & Row).EntireRow.Delete
            End If
        Next Row
    End With

End Sub

Debemos comenzar el bucle con la fila inferior porque al borrar una fila se desplazarán los datos, omitiendo filas si realiza el bucle de arriba hacia abajo. Además, observe que en lugar de introducir manualmente la última fila, calculamos la última fila utilizada.

Eliminar Fila Basado en Filtro

En el ejemplo anterior, realizamos un bucle a través de las filas, eliminando cada fila que cumple los criterios. Alternativamente, podemos usar el Autofiltro de Excel para filtrar filas basándonos en algún criterio y luego eliminar las filas visibles:

Sub Filtrar_y_EliminarFilas()

    'Declarar variable ws
    Dim ws As Worksheet
    Set ws = ActiveSheet
    
    'Restablecer filtros
    On Error Resume Next
    ws.ShowAllData
    On Error GoTo 0

    'Aplicar filtro
    ws.Range("a1:d100").AutoFilter Field:=1, Criteria1:="eliminar"
    
    'Eliminar Filas
    Application.DisplayAlerts = False
    ws.Range("a1:d100").SpecialCells(xlCellTypeVisible).Delete
    Application.DisplayAlerts = True
    
    'Limpiar Filtros
    On Error Resume Next
    ws.ShowAllData
    On Error GoTo 0
  
End Sub

Eliminar Fila Basado en Criterios de Celda

Esto hará un bucle a través de un rango, eliminando filas si la celda en la columna A cumple ciertos criterios (< 0):

Sub EliminarFilasBasadoEnValorDeCelda()

    'Declarar Variables
    Dim LastRow As Long, FirstRow As Long
    Dim Row As Long
    
    With ActiveSheet
        'Definir primeraa y última fila
        FirstRow = 1
        LastRow = .UsedRange.Rows(.UsedRange.Rows.Count).Row
    
        'Bucle a través de filas (de abajo a arriba)
        For Row = LastRow To FirstRow Step -1
            If .Range("A" & Row).Value < 0 Then
                .Range("A" & Row).EntireRow.Delete
            End If
        Next Row
    End With

End Sub

Eliminar Fila Si La Celda Está en Blanco

Esto recorrerá un rango, eliminando una fila si una celda en la columna A está en blanco:

Sub EliminarFilaSiCeldaEstaEnBLanco()

    'Declarar Variables
    Dim LastRow As Long, FirstRow As Long
    Dim Row As Long
    
    With ActiveSheet
        'Definir la primera y la última fila
        FirstRow = 1
        LastRow = .UsedRange.Rows(.UsedRange.Rows.Count).Row
    
        'Bucle a través de filas (de abajo a arriba)
        For Row = LastRow To FirstRow Step -1
            If .Range("A" & Row).Value = "" Then
                .Range("A" & Row).EntireRow.Delete
            End If
        Next Row
    End With

End Sub

Eliminar Filas en Blanco

Alternativamente, si desea eliminar una fila si toda la fila está en blanco  (Haga clic en el enlace para un método ligeramente diferente), puede utilizar este código:

Sub EliminarFilasEnBlanco()
 
    'Declarar Variables
    Dim LastRow As Long, FirstRow As Long
    Dim Row As Long
     
    With ActiveSheet
        'Definir la primera y la última fila
        FirstRow = 1
        LastRow = .UsedRange.Rows(.UsedRange.Rows.Count).Row
     
        'Bucle a través de filas (de abajo a arriba)
        For Row = LastRow To FirstRow Step -1
            If WorksheetFunction.CountA(.Rows(Row)) = 0 Then
                .Rows(Row).EntireRow.Delete
            End If
        Next Row
    End With
 
End Sub

Eliminar Fila Si La Celda Contiene Un Valor

Esto hará un bucle a través de un rango, eliminando una fila si la celda de la columna A no está en blanco:

Sub EliminarFilasBasadoEnValorDeCelda()

    'Declarar Variables
    Dim LastRow As Long, FirstRow As Long
    Dim Row As Long
    
    With ActiveSheet
        'Definir la primera y la última fila
        FirstRow = 1
        LastRow = .UsedRange.Rows(.UsedRange.Rows.Count).Row
    
        'Bucle a través de filas (de abajo a arriba)
        For Row = LastRow To FirstRow Step -1
            If .Range("A" & Row).Value <> "" Then
                .Range("A" & Row).EntireRow.Delete
            End If
        Next Row
    End With

End Sub

Insertar Fila Basado en el Valor de la Celda

Esto recorrerá un rango, insertando filas si una determinada celda en esa fila dice “insertar”:

Sub InsertarFilasBasadoEnValorDeCelda()

    'Declarar Variables
    Dim LastRow As Long, FirstRow As Long
    Dim Row As Long
    
    With ActiveSheet
        'Definir la primera y la última fila
        FirstRow = 1
        LastRow = .UsedRange.Rows(.UsedRange.Rows.Count).Row
    
        'Bucle a través de filas (de abajo a arriba)
        For Row = LastRow To FirstRow Step -1
            If .Range("A" & Row).Value = "insertar" Then
                .Range("A" & Row).EntireRow.Insert
            End If
        Next Row
    End With

End Sub
vba-free-addin

Complemento de Ejemplos de Código de VBA

Acceda fácilmente a todos los ejemplos de código que se encuentran en nuestro sitio.

Simplemente navegue al menú, haga clic y el código se insertará directamente en su módulo. Complemento .xlam.

(¡No se requiere instalación!)

Descarga gratuita

Return to VBA Code Examples