Este tutorial demostrará diferentes maneras de eliminar filas y columnas en Excel utilizando VBA.
Eliminar fila o columna entera
Para eliminar una fila entera en VBA utilice esta línea de código:
Rows(1).Delete
Nota que utilizamos el método Delete para eliminar una fila.
En lugar de hacer referencia al objeto Rows, puede hacer referencia a las filas basándose en su objeto Range con EntireRow:
Range("a1").EntireRow.Delete
Del mismo modo, para eliminar una columna entera, utilice estas líneas de código:
Columns(1).Delete
Range("a1").EntireColumn.Delete
Borrar varias filas o columnas
Usando la misma lógica, también puedes borrar varias filas a la vez:
Rows("1:3").Delete
o columnas:
Columns("A:C").Delete
Nota que aquí referenciamos los números / letras de fila y columna específicos rodeados de comillas.
Por supuesto, también puede hacer referencia a la EntireRow de un rango:
Range("a1:a10").EntireRow.Delete
Nota: Los ejemplos de abajo sólo demuestran la eliminación de filas, sin embargo, como se puede ver arriba, la sintaxis es prácticamente idéntica para eliminar columnas.
Borrar filas en blanco / vacías
Este ejemplo borrará una fila si toda la fila está en blanco:
Sub DeleteRows_EntireRowBlank()Dim cell As RangeFor Each cell In Range("b2:b20") If Application.WorksheetFunction.CountA(cell.EntireRow) = 0 Then cell.EntireRow.Delete End IfNext cellEnd Sub
Hace uso de la función de hoja de cálculo de Excel: COUNTA.
Borrar fila si la celda está en blanco
Esto borrará una fila si una columna específica de esa fila está en blanco (en este caso la columna B):
Range("b3:b20").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
Borrar fila basado en el valor de la celda
Esto hará un bucle a través de un rango, y borrará filas si un determinado valor de la celda en esa fila dice «borrar».
Sub DeleteRowswithSpecificValue()Dim cell As RangeFor Each cell In Range("b2:b20") If cell.Value = "delete" Then cell.EntireRow.Delete End IfNext cellEnd Sub
Más ejemplos de eliminación de filas y columnas
Eliminar filas duplicadas
Este código eliminará todas las filas duplicadas en un rango:
Range("b2:c100").RemoveDuplicates Columns:=2
Nota que establecemos Columnas:=2. Esto le dice a VBA que compruebe las dos primeras columnas de datos cuando considere si las filas son duplicadas. Sólo se encuentra un duplicado cuando ambas columnas tienen valores duplicados.
Si hubiéramos establecido esto en 1, sólo se habría comprobado la primera fila en busca de valores duplicados.
Borrar filas de la tabla
Este código borrará la segunda fila de una tabla haciendo referencia a ListObjects.
ThisWorkbook.Sheets("Sheet1").ListObjects("list1").ListRows(2).Delete
Borrar filas filtradas
Para borrar sólo las filas visibles tras el filtrado:
Range("b3:b20").SpecialCells(xlCellTypeVisible).EntireRow.Delete
Borrar filas del rango
Este código borrará todas las filas del rango:
Range("a1:a10").EntireRow.Delete
Borrar filas seleccionadas
Este código borrará todas las filas seleccionadas:
Selection.EntireRow.Delete
Borrar última fila
Esto borrará la última fila utilizada en la columna B:
Cells(Rows.Count, 2).End(xlUp).EntireRow.Delete
Cambiando 2 por 1, se puede borrar la última fila utilizada en la columna A, etc.
Cells(Rows.Count, 1).End(xlUp).EntireRow.Delete
Borrar columnas por número
Para borrar una columna por su número, utilice un código como este:
Columns (2).Delete