Este tutorial demostrará cómo eliminar o insertar filas según los valores de las celdas.
Eliminar fila según el valor de la celda
Esto recorrerá un rango y eliminará filas si la columna A dice "eliminar".
1234567891011121314151617181920 | Sub DeleteRowsBasedonCellValue ()'Declarar variablesAtenuar LastRow tan largo, FirstRow tan largoDim Row tan largoCon ActiveSheet'Definir primera y última filaPrimera fila = 1LastRow = .UsedRange.Rows (.UsedRange.Rows.Count) .Row'Bucle a través de filas (de abajo hacia arriba)For Row = LastRow to FirstRow Paso -1Si .Range ("A" & Row) .Value = "delete" Entonces.Range ("A" & Fila) .EntireRow.DeleteTerminara siFila siguienteTerminar conEnd Sub |
Debemos comenzar el ciclo con la fila inferior porque eliminar una fila desplazará los datos, omitiendo filas si realiza un ciclo de arriba hacia abajo.
Además, observe que en lugar de ingresar manualmente en la última fila, calculamos la última fila utilizada.
Eliminar fila: según el filtro
En el ejemplo anterior, recorrimos las filas, eliminando cada fila que cumple con los criterios. Alternativamente, podemos usar el Autofiltro de Excel para filtrar filas según algunos criterios y luego eliminar las filas visibles:
12345678910111213141516171819202122232425 | Sub FilterAndDeleteRows ()'Declarar la variable wsDim ws como hoja de trabajoEstablecer ws = ActiveSheet'Restablecer filtros existentesEn caso de error, reanudar siguientews.ShowAllDataEn caso de error, vaya a 0'Aplicar filtrows.Range ("a1: d100"). Campo de autofiltro: = 1, Criterio1: = "eliminar"'Eliminar filasApplication.DisplayAlerts = Falsows.Range ("a1: d100"). SpecialCells (xlCellTypeVisible) .DeleteApplication.DisplayAlerts = True'Filtro claroEn caso de error, reanudar siguientews.ShowAllDataEn caso de error, vaya a 0End Sub |
Eliminar fila según criterios de celda
Esto recorrerá un rango, eliminando filas si la celda en la columna A cumple con ciertos criterios (<0):
1234567891011121314151617181920 | Sub DeleteRowsBasedonCellValue ()'Declarar variablesAtenuar LastRow tan largo, FirstRow tan largoDim Row tan largoCon ActiveSheet'Definir primera y última filaPrimera fila = 1LastRow = .UsedRange.Rows (.UsedRange.Rows.Count) .Row'Bucle a través de filas (de abajo hacia arriba)For Row = LastRow to FirstRow Paso -1Si .Range ("A" & Row) .Value <0 Entonces.Range ("A" & Fila) .EntireRow.DeleteTerminara siFila siguienteTerminar conEnd Sub |
Programación VBA | ¡Code Generator funciona para usted!
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:
1234567891011121314151617181920 | Sub DeleteRowsBasedonCellValue ()'Declarar variablesAtenuar LastRow tan largo, FirstRow tan largoDim Row tan largoCon ActiveSheet'Definir primera y última filaPrimera fila = 1LastRow = .UsedRange.Rows (.UsedRange.Rows.Count) .Row'Bucle a través de filas (de abajo hacia arriba)For Row = LastRow to FirstRow Paso -1Si .Range ("A" & Row) .Value = "" Entonces.Range ("A" & Fila) .EntireRow.DeleteTerminara siFila siguienteTerminar conEnd Sub |
Eliminar fila 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 usar este código:
1234567891011121314151617181920 | Sub DeleteBlankRows ()'Declarar variablesAtenuar LastRow tan largo, FirstRow tan largoDim Row tan largoCon ActiveSheet'Definir primera y última filaPrimera fila = 1LastRow = .UsedRange.Rows (.UsedRange.Rows.Count) .Row'Bucle a través de filas (de abajo hacia arriba)For Row = LastRow to FirstRow Paso -1Si WorksheetFunction.CountA (.Rows (Row)) = 0 Entonces.Rows (Fila) .EntireRow.DeleteTerminara siFila siguienteTerminar conEnd Sub |
Eliminar fila si la celda contiene valor
Esto recorrerá un rango, eliminando una fila si la celda en la columna A no está en blanco:
1234567891011121314151617181920 | Sub DeleteRowsBasedonCellValue ()'Declarar variablesAtenuar LastRow tan largo, FirstRow tan largoDim Row tan largoCon ActiveSheet'Definir primera y última filaPrimera fila = 1LastRow = .UsedRange.Rows (.UsedRange.Rows.Count) .Row'Bucle a través de filas (de abajo hacia arriba)For Row = LastRow to FirstRow Paso -1Si .Range ("A" & Row) .Value "" Entonces.Range ("A" & Fila) .EntireRow.DeleteTerminara siFila siguienteTerminar conEnd Sub |
¿Cansado de buscar ejemplos de código VBA? ¡Prueba AutoMacro!
Insertar fila según el valor de la celda
Esto recorrerá un rango, insertando filas si una determinada celda en esa fila dice "insertar":
1234567891011121314151617181920 | Sub InsertRowsBasedonCellValue ()'Declarar variablesAtenuar LastRow tan largo, FirstRow tan largoDim Row tan largoCon ActiveSheet'Definir primera y última filaPrimera fila = 1LastRow = .UsedRange.Rows (.UsedRange.Rows.Count) .Row'Bucle a través de filas (de abajo hacia arriba)For Row = LastRow to FirstRow Paso -1Si .Range ("A" & Row) .Value = "insert" Entonces.Rango ("A" & Fila) .EntireRow.InsertTerminara siFila siguienteTerminar conEnd Sub |