Añadir y eliminar filas es parte de las tareas comunes del día a día cuando se trabaja con Excel.
Aunque se puede hacer esto fácilmente desde la propia hoja de trabajo, a veces es posible que desee utilizar la ruta VBA para eliminar filas en Excel. Estos podrían ser la eliminación de una fila específica, múltiples filas en la selección, la eliminación de filas alternas o las que tienen un valor específico en ella.
En este tutorial, te mostraré cómo eliminar filas en Excel utilizando VBA (múltiples escenarios).
Así que vamos a empezar!
Eliminar una fila entera usando VBA
Para eliminar una fila entera en Excel usando VBA, necesitas usar el método EntireRow.Delete.
Por ejemplo, si desea eliminar toda la primera fila de una hoja de trabajo, puede utilizar el siguiente código:
Sub DeleteEntireRow()Rows(1).EntireRow.DeleteEnd Sub
El código anterior primero especifica la fila que necesita ser eliminada (que se hace especificando el número entre paréntesis) y luego utiliza el método EntireRow.Delete para eliminarla.
También puede eliminar varias filas especificando estas filas en el código.
Por ejemplo, el siguiente código eliminará las filas número 1, 5 y 9 de la hoja de trabajo:
Sub DeleteEntireRow()Rows(9).EntireRow.DeleteRows(5).EntireRow.DeleteRows(1).EntireRow.DeleteEnd Sub
El código anterior utiliza la misma lógica, en la que especifica los números de fila y Excel eliminará estas filas una a una.
Eliminar todas las filas de la selección
En el caso de que quieras eliminar todas las filas de un rango de celdas seleccionado, puedes utilizar el código de macro VBA que aparece a continuación:
Sub DeleteEntireRow()Selection.EntireRow.DeleteEnd Sub
El código anterior aplica el método EntireRow.Delete a toda la selección.
Eliminar filas alternas (o eliminar cada tercera/cuarta/quinta fila)
A veces, puede obtener un volcado de datos en el que cada segunda fila (o tercera, cuarta o enésima fila) es inútil y necesita ser eliminada.
Solía trabajar con datos financieros donde cada segunda fila estaba vacía y tenía que ser eliminada.
Este es el tipo de escenario donde VBA realmente brilla.
A continuación se muestra el código VBA que recorrerá todas las filas de la selección y borrará cada segunda fila:
Sub DeleteAlternateRows()RCount = Selection.Rows.CountFor i = RCount To 1 Step -2 Selection.Rows(i).EntireRow.DeleteNext iEnd Sub
Déjeme explicar cómo funciona este código VBA.
Primero, he utilizado una variable RCount para obtener el número total de filas de la selección.
Después he utilizado un bucle For Next para ejecutar esto tantas veces como filas haya. Por ejemplo, si hay 12 filas, este bucle se ejecutará del 12 al 1 (es decir, 12 veces). Es importante ejecutar esto desde la última fila de la selección hasta la primera, ya que no queremos que los números de las filas cambien cuando se elimine una fila.
También se utiliza el paso -2 ya que necesitamos eliminar una de cada dos filas (de abajo a arriba). En caso de que quiera eliminar cada tercera fila, puede utilizar el paso -3.
Dentro del bucle VBA, he utilizado el método Selection.Rows(i).EntireRow.Delete para eliminar cada fila alternativa.
Eliminar filas en blanco con VBA
También puede utilizar el método EntireRow.Delete para eliminar todas las filas en blanco.
A continuación se muestra el código VBA que seleccionará las celdas en blanco en el conjunto de datos seleccionado y eliminará toda la fila.
Sub DeleteBlankRows()Selection.SpecialCells(xlCellTypeBlanks).EntireRow.DeleteEnd Sub
El código anterior utiliza la propiedad SpecialCells para seleccionar y eliminar todas las celdas que están en blanco. Este es el mismo método que también nos permite utilizar el cuadro de diálogo ‘Go To Special’ para seleccionar todas las celdas en blanco.
Una vez que estas celdas en blanco se identifican utilizando SpecialCell, éstas se eliminan utilizando el método EntireRow.Delete.
Eliminar filas con una palabra/valor específico
También puede utilizar un simple código VBA para recorrer cada celda del rango seleccionado y eliminar todas las filas en las que una celda contenga un texto o valor específico.
Por ejemplo, suponga que tiene un conjunto de datos y quiero eliminar todas las celdas que tienen el texto Impresora en la columna 2 de la selección.
A continuación se muestra el código que hará esto:
Sub DeleteRowswithSpecificValue()For i = Selection.Rows.Count To 1 Step -1If Cells(i, 2).Value = "Printer" ThenCells(i, 2).EntireRow.DeleteEnd IfNext iEnd Sub
El código anterior primero cuenta el número total de filas en la selección. Esto asegurará que el bucle se ejecute sólo estas veces. A continuación, utiliza el bucle ‘For Next’ para recorrer todas las celdas de la columna 2.
Luego se utiliza la sentencia IF THEN ELSE para comprobar el valor de cada celda de la columna 2. Y en caso de que el valor/texto coincida con el texto especificado (que es ‘Impresora’ en este ejemplo).
En este ejemplo, he comprobado si el texto coincide con una cadena específica o no. También puedes hacer esto con valores. Por ejemplo, puede eliminar todas las filas en las que el valor de la venta sea inferior a 1000 o superior a 1000.
Nota: Algo importante a tener en cuenta aquí es que el bucle se ejecuta desde Selection.Rows.Count To 1 para asegurarse de que cuando se elimina una fila, no afecta a las filas que están por encima.
Cómo usar este código VBA
Ahora déjame mostrarte cómo usar todos los códigos mencionados en este tutorial para eliminar la fila completa.
Tienes que copiar y pegar estos códigos en un módulo en el Editor VB de Excel. Una vez que tenga estos códigos copiados, puede ejecutar los códigos de la macro.
A continuación se muestran los pasos para copiar y pegar estos códigos VBA en un módulo:
- Mantenga pulsada la tecla ALT y pulse la tecla F11 (o Función + Opción + F11 en Mac). Esto abrirá el Editor VB
- En el Editor VB, tendrás el explorador de proyectos a la izquierda. Si no lo ve, vaya a la opción Ver y luego haga clic en Explorador de proyectos.
- Haga clic con el botón derecho en cualquier objeto del Explorador de proyectos (para el libro de trabajo en el que desea ejecutar el código).
- Vaya a Insertar y luego haga clic en Módulo. Esto insertará un nuevo Módulo para el libro de trabajo
- Copiar y pegar los códigos anteriores en el módulo.
Y para ejecutar estos códigos, puedes situar el cursor en cualquier lugar del código (que quieras ejecutar) y pulsar la tecla F5 (o hacer clic en el triángulo verde de la barra de herramientas VBA).
También he escrito un tutorial detallado sobre las diferentes formas de ejecutar los códigos de macro VBA en Excel.
Así que estos fueron algunos códigos VBA que puede utilizar para eliminar filas enteras en Excel (en diferentes escenarios). La misma lógica también se puede aplicar en caso de que desee eliminar columnas en lugar de filas (con el ajuste correspondiente en los ejemplos de código).
Espero que haya encontrado este tutorial útil!
También le pueden gustar los siguientes tutoriales de Excel:
- Autofiltro VBA de Excel: Una guía completa con ejemplos
- Borrar filas en función de un valor de celda (o condición) en Excel
- Insertar una fila en blanco después de cada fila en Excel (o cada enésima fila)
- Cómo desocultar rápidamente las COLUMNAS en Excel
.