Como borrar toda la fila en Excel mediante VBA

Añadir y eliminar filas forma parte de las tareas habituales diarias cuando se trabaja con Excel.

Aunque puede hacerlo fácilmente desde el propio hoja de cálculo, es posible que desee utilizar la ruta VBA para suprimir filas a Excel. Podrían ser la supresión de una fila específica, varias filas de la selección, la supresión de filas alternativas o aquellas que tengan un valor específico.

En este tutorial, te mostraré cómo eliminar filas en Excel mediante VBA (varios escenarios).

Empezamos, pues,

Suprimir una fila entera mediante VBA

Para eliminar una fila entera a Excel mediante VBA, debe utilizar el método EntireRow.Delete.

Por ejemplo, si desea eliminar toda la primera fila de una hoja de cálculo, puede utilizar el siguiente código:

Sub DeleteEntireRow()
Rows(1).EntireRow.Delete
End Sub

El código anterior especifica primero la fila que hay que suprimir (cosa que se hace especificando el número entre corchetes) y, a continuación, utiliza el método EntireRow.Delete para suprimirla.

También puede eliminar varias filas especificando estas filas al código.

Por ejemplo, el código siguiente suprimirá las filas número 1, 5 y 9 de la hoja de trabajo:

Sub DeleteEntireRow()
Rows(9).EntireRow.Delete
Rows(5).EntireRow.Delete
Rows(1).EntireRow.Delete
End Sub

El código anterior utiliza la misma lógica, donde especifica los números de fila y Excel suprimirá estas filas una por una.

IMPORTANTE: al eliminar filas con algo similar al código anterior, acuérdate de empezar a suprimir de la parte inferior y, a continuación, subir. Por ejemplo, en caso de que comience por la parte superior y elimine la fila 1 primero, todas las filas de abajo se desplazarían una fila hacia arriba y la numeración estaría desactivada (ya que la fila 5 se convertiría en la fila 4 y así sucesivamente)

Suprimir todas las filas de la selección

En caso de que desee eliminar todas las filas de un rango de celdas seleccionado, puede utilizar el código de macro VBA siguiente:

Sub DeleteEntireRow()
Selection.EntireRow.Delete
End Sub

El código anterior se aplica al método EntireRow.Delete a toda la selección.

Eliminar filas alternativas (o suprime cada tercera / cuarta / enésima fila)

A veces, es posible que obtenga un vaciado de datos en el que cada segunda fila (o tercera, cuarta o novena fila) no sirve para nada y hay que eliminarla.

Antes trabajaba con datos financieros donde cada segunda fila estaba vacía y había que eliminar.

Este es el tipo de escenario en que realmente brilla VBA.

A continuación se muestra el código VBA que recorrerá todas las filas de la selección y se eliminará cada segunda fila:

Sub DeleteAlternateRows()
RCount = Selection.Rows.Count
For i = RCount To 1 Step -2
    Selection.Rows(i).EntireRow.Delete
Next i
End Sub

Dejadme explicar cómo funciona este código VBA.

En primer lugar, 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 ejecutarlo tantas veces como haya muchas filas. Por ejemplo, si hay 12 filas, este bucle funcionará de 12 a 1 (es decir, 12 veces). Es importante ejecutarlo desde la última fila de la selección hasta la primera, ya que no queremos que cambien los números de filas cuando se suprime una fila.

Además, se utiliza el paso -2, ya que tenemos que suprimir todas las demás filas (de abajo arriba). En caso de que desee eliminar cada tercera fila, puede utilizar -3.

Dentro del bucle VBA, he utilizado el método Selection.Rows (i) .EntireRow.Delete para eliminar todas las filas alternativas.

Suprimir las filas en blanco con VBA

También puede utilizar el método EntireRow.Delete para suprimir todas las filas en blanco.

A continuación se muestra el código VBA que seleccionará celdas en blanco del conjunto de datos seleccionado y suprimirá toda la fila.

Sub DeleteBlankRows()
Selection.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End 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 “Ir a especial” para seleccionar todas las celdas en blanco.

Una vez identificadas estas celdas en blanco mediante SpecialCell, estas se eliminarán mediante el método EntireRow.Delete.

Nota: Este método selecciona las celdas que están en blanco y no comprueban si toda la fila está en blanco o no. Por lo tanto, si alguien tiene una celda vacía en una fila, aunque se suprimiría toda la fila.

Eliminar filas con una palabra o un valor específicos

También puede utilizar un código VBA simple para pasar por cada celda del intervalo seleccionado y suprimir todas las filas donde una celda contiene un texto o un valor específicos.

Por ejemplo, supongamos que tiene un conjunto de datos y quiero eliminar todas las celdas que tengan el texto Impresora en la columna 2 de la selección.

Conjunto de datos desde donde borra una fila entera con un valor específico

A continuación se muestra el código que hará esto:

Sub DeleteRowswithSpecificValue()
For i = Selection.Rows.Count To 1 Step -1
If Cells(i, 2).Value = "Printer" Then
Cells(i, 2).EntireRow.Delete
End If
Next i
End Sub

El código anterior cuenta primero el número total de filas de la selección. Esto asegurará que el bucle sólo ejecute muchas veces. A continuación, utiliza el bucle “Para el siguiente” para pasar por todas las celdas de la columna 2.

A continuación, 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 puede hacerlo con valores. Por ejemplo, puede suprimir todas las filas en las que el valor de 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 a 1 para asegurarse de que cuando se suprime una fila, no afecta a las filas que hay encima.

Cómo utilizar este código VBA

Ahora dejadme mostraros cómo utilizar todos los códigos mencionados en este tutorial para suprimir toda la fila.

Debe copiar y pegar estos códigos en un módulo del Editor VB de Excel. Cuando haya copiado estos códigos, puede ejecutar los códigos macro.

A continuación se muestran los pasos para copiar y pegar estos códigos VBA en un módulo:

  1. Mantenga pulsada la tecla ALT y pulse la tecla F11 (o Función + Opción + F11 en Mac). Esto abrirá el editor VB
  2. En el Editor VB, tendrá el explorador de proyectos a la izquierda. Si no lo ve, vaya a la opción Ver y haga clic en Project Explorer.Haga clic en Project Explorer
  3. Haga clic con el botón derecho en cualquier objeto del Explorador de proyectos (para el libro de trabajo donde quiera ejecutar el código).Insertar el módulo
  4. Vaya a Insertar y haga clic en Módulo. Esto insertará un módulo nuevo para el libroCopia y pega para suprimir toda la fila del módulo
  5. Copia y pega los códigos anteriores al módulo.

Y para ejecutar estos códigos, puede colocar el cursor en cualquier lugar del código (que desee 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 diferentes maneras de ejecutar códigos de macro VBA en Excel.

En caso de que deba utilizar alguno de estos códigos con mucha frecuencia, también puede plantearles añadirlos al libro de trabajo de macro personal y luego al QAT. De este modo, el código estará disponible en cualquiera de sus libros de trabajo con un solo clic.

Por lo tanto, estos eran algunos códigos VBA que puede usar para suprimir filas enteras a 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 a los ejemplos de código).

Espero que os haya sido útil este tutorial.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *