Eliminar o Insertar Filas en Función del Valor de la Celda
In this Article
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