Eliminar filas vacías en Excel

Inicio » Excel para contadores. » (07 / 09 / 2008 )

En ocasiones necesitamos eliminar en Excel aquellas filas vacías que se encuentran en nuestros listados de productos, personas, etc.

Muchas veces debemos eliminar algún dato de nuestras hojas de cálculo, quedando una fila vacía, la cual tenemos que buscar manualmente y eliminar manualmente algo que no será muy cómo si se trata de listados grandes.

Pues bien, este proceso lo podemos hacer de forma automática, mediante una Macro, quien se encargara de revisar las filas que se encuentren vacías y proceder a eliminarlas.

Para ello vamos a la barra de herramientas, elegimos Macro, Editor de Visual Basic.

Una vez tengamos el editor de visual abierto, vamos al menú Insertar y elegimos Insertar modulo, y allí pegamos el siguiente código:

Sub eliminarfilavacia()
For fila = 1 To 65536
If Cells(fila, 4).Value = "0" Then
Rows(fila).Delete
End If
Next fila
End Sub

Luego le damos guardar en la barra de menú o presionamos las teclas Ctrl + S

Ya tenemos nuestra aplicación para que haga el trabajo por nosotros.

Para ejecutar la macro o iniciar el proceso, vamos al menú Herramientas, elegimos Macro, Macros.

Allí nos aparece el listado de macros que tenemos, seleccionamos la que necesitamos y le damos Ejecutar.

Otra forma de buscar las macros es presionando las teclas Alt + F8 al tiempo.

Podemos también crear un botón que al darle Clic nos ejecute la macro.

Para ello, vamos al menú Ver, Barras de herramientas, Formularios.

En la barra de formularios elegimos la opción Botón, y lo colocamos en la parte de la pantalla que deseemos, y nos aparecerá el listado de macros existentes. Luego seleccionamos la macro que se ejecutará al presionar el botón.

Solo resta colarle un nombre al botón para identificarlo.

Actualización

Como está el código de la macro, elimina las filas que tengan el valor 0 (cero).

Para eliminar las celdas vacías el código es el siguiente:
Sub eliminarfilavacia()
For fila = 1 To 6000
If Cells(fila, 4).Value = "" Then
Rows(fila).Delete
End If
Next fila
End Sub

Tenga en cuenta que en la macro debe definir el rango de filas a revisar, rango que debe estar entre la primera fila ocupada hasta la última fila ocupada [en el ejemplo el rango va hasta la fila 6000], puesto que si de deja hasta la fila 65536 puede significar que la macro se ejecute indefinidamente y no sea posible cerrar la aplicación ni guardar el archivo.

Temas relacionados

Siéntase libre de opinar


22 Opiniones
  1. Joshua dice:

    ¿Còmo le hago para eliminar filas que contengan celdas vacìas en una hoja de Excel?

  2. JPGallego dice:

    Excelente, de gran ayuda.

  3. JAIME dice:

    mil gracias! me fue de gran ayuda!

  4. Salvador. dice:

    Sin macros:

    Seleccionar la columna o fila que contenga celdas en blanco. F5-Ir a/Especial/Celdas en blanco-Aceptar (se habrán seleccionado las celdas en blanco) Eliminar filas.

  5. maciel leyva dice:

    la macro eliminar celdas con valor 0, no me borra automaticamente mis celdas con valor 0. ejemplo si tengo 5 filas seguidas me borra 2 o 3, pero no las 5. tendre que ejecutar el comando una y otra ves siempre?

  6. maciel leyva dice:

    Tome la macro y coloque en mi archivo de excel, la macro se llama
    eliminar filas con valor 0
    .

    entonces al ejecutar la macro, no me borra todas las filas en las que detecta el numero 0, tengo que ejecutar la macro 5 veces en mi archivo de 62 articulos. tengo un error? o siempre voy a estar ejecutando la macro?, espero me puedan ayudar gracias

  7. MARCO dice:

    COMO PUEDO ELIMINAR VARIAS FILAS DE DIFERENTES HOJAS A LA VES PUEDO INSERTAR AL GUN BOTON Q DIGA BORRA Y ASI SE BORREN AUTOMATICO TODO ES MUY TEDIOSO HACERLO HOJA X HOJA GRACIAS AGRADESERIA SI M DIERAN AL GUN TUTO PARA PODER HACERLO

    • Obed dice:

      Marco,

      Utiliza este Código, Cambia la Columna "A" por la que necesites.

      Option Explicit
      'OCruzG Excel VBA Developers
      'www.o-cruzg.blogspot.com
      'ocruzgvba@gmail.com

      Sub EliminarCeldas()
      Dim i&, x%

      For i = 1 To ThisWorkbook.Worksheets.Count
      With Worksheets(i)
      On Error Resume Next
      x = .Range("A65536").End(xlUp).Row
      .Cells.Range("A1:A" & x).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
      End With
      Next i

      End Sub

    • Luis Eduardo Fino dice:

      primero deberia aprender a escribir, y no en Mayusculas sostenidas, que ortografia.....

  8. Javier Andres Avila D. dice:

    Buenas tardes comunidad gerencie,

    Líneas abajo envío mi aporte al código inicial, esta soluciona el inconveniente que se presentaba y adicional su tiempo de ejecución es más rápido ya que identifica cuantas cedas estan vacías y no corre una por una como la incial “For fila = 1 To 6000”. También con este desarrollo en los campos del código de celda en blanco lo pueden reemplazar para que elimine algún otro carácter diferente ya sea cuenta, nombre o valor etc, recuerden que inicia en la ceda A1 y busca en toda la selección A:A. espero les sea útil

    Feliz dia.

    Andres Avila
    Contador Publico
    ______________________________________________
    Sub eliminarfilavacia1()

    Application.ScreenUpdating = False

    Dim Range_for, Columns_for, Countif
    Cells(1, 1).Select
    Selection.CurrentRegion.Select
    Range_for = Selection.Rows.Count
    Range("IV1").Select
    ActiveCell.FormulaR1C1 = "=COUNTIF(RC[-255]:R" & Range_for & "C[-255],"""")"
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
    Application.CutCopyMode = False
    Countif = ActiveCell.Value

    For i = 1 To Countif

    For fila = 1 To Range_for
    If Cells(fila, 1).Value = "" Then
    Rows(fila).Delete
    End If
    Next fila
    Next

    Cells(1, 1).Select
    Application.ScreenUpdating = True

    End Sub

  9. Andres dice:

    Hola la pagina la encontre por casualidad , ya que tengo un problema con una macro, el problema esta en que una informacion que tengo en una hoja, debo buscar unos codigos y eliminar de la hojas estos codigos y toda su informacion. Lo habia realizado haciendo un filtro y eliminandos las celdas que tenian este codigo pero si estos codigo llegan a aumentar o disminuir me afectaria otros codigos. Espero haberme explciado bien. Si alguien me pueda ayudar saludos. No soy un experto en macros, la macro la realice no via visual sino grabada paso a paso.
    Gracias e antemano por cualquier tip o consejo.

  10. pedro rincon dice:

    Una ayuda por favor, tengo la formula de la dian asi: valor presente, parentesis angular, parentesis (1+i) exponente 1/365 cierro parentesis angular
    exponente n o número de dias (supongo) menos 1.
    pues bién, para una persona que tenga la buena voluntad, pregunto:
    ¿es la formula correcta?, la tasa es anual Ej.: 20.63 anual, ¿quedaria entonces,(1+.2063)con el exponente desde luego?.
    será equivalente:P(1+i)expnente:numero de dias de mora sobre 365?

    ¡mil gracias a los no egoista!

    me comprometo a ayudar en los mismos casos.
    ¡ hasta siempre!

  11. Jose dice:

    En efecto, va genial! Gracias!

  12. david dice:

    esta ultima esta super .... gracias

  13. Esteban dice:

    chicos acá encontre una que anda perfecto... no te elimina ningun registro con contenido. Lo saque de ayuda de MICROSOFT. Por si a alguien le interesa:

    ' The following code deletes blank rows from the active worksheet.

    Dim Counter
    Dim i As Integer

    Sub DelRow()

    ' Input box to determine the total number of rows in the worksheet.
    Counter = InputBox("Enter the total number of rows to process")
    Activecell.Select
    ' Loops through the desired number of rows.
    For i = 1 To Counter
    ' Checks to see if the active cell is blank.
    If ActiveCell = "" Then
    Selection.EntireRow.Delete

    ' Decrements count each time a row is deleted. This ensures
    ' that the macro will not run past the last row.
    Counter = Counter - 1
    Else
    ' Selects the next cell.
    ActiveCell.Offset(1, 0).Select
    End If

    Next i

    End Sub

  14. Esteban dice:

    esta buena la macro... pero definitivamente, como dice el amigo Guillermo, te va borrando filas con datos en cada pasada... q será?!... algun errorcito?

  15. Guillermo dice:

    Buenos dias. No se si podeis echarme una mano.

    La macro me medio funciona, cuando la ejecuto me borra una linea si una no, las he numerado por eso lo se. Imagino que al borrar la fila el registro pasa la 2 al 1 y la macro borra la nueva 2, pero la antigua 2 que ahora es 1 se queda sin borrar.

    Hacer la prueba y si tengo 100 filas me va borrando siempre la mitad, ejecutando la macro mas de 5 veces me borra todo, pero me parece una chapuza por mi parte.

    Gracias.

  16. Miriam dice:

    Excelente este codigo es de mucha utilidad

    • Pako dice:

      Gran aporte, sólo un detalle:
      Para que te borre todos los ceros o vacíos de una fila y no te borre unos si y otros no lo que tienes que jacer es colocar antes del end if un fila = fila - 1 por que al eliminar la fila anterior sube todas y si en el número siguiente tenías un cero, lo sube y entonces ya no lo analiza, entonces lo único que hace es que si encuentra una fila vacía pues vuelve a revisar la fila después de haberse eliminado a ver si el que sigue no sigue siendo un cero. Saludos

En Gerencie.com está permitido opinar, criticar, discutir, controvertir, disentir, etc. Lo que no está permitido es insultar o escribir palabras ofensivas o soeces. Si lo hace, su comentario será rechazado por el sistema o será eliminado por el administrador. Por último, trate de no escribir en mayúscula sostenida, resulta muy difícil leerle.