¿Cómo eliminar totalmente una fila cuando en una de ellas una celda esté vacía?

Tengo un libro diario, el inconveniente que tengo es que tengo datos desde la columna A hasta la F

Y quisiera ver la forma de eliminar totalmente una fila cuando por ejemplo en a1:a1048576 o b1:b1048576 o c1:c1048576 o d1:d1048576 o f1:f 1048576 se encuentre vacía, o sea si tengo datos en la fila a1 y la b1 esta vacía y las demás también vacía, que elimine completa fila, o en el caso que desde a1 hasta f1 este vacío, también eliminarla totalmente, o si en a1 esta vacío y haya datos en b1, c1 y d1 y f1 estén vacíos que lo elimine totalmente, resumiendo quisiera una macro que elimine según estas 2 condiciones:

1) Eliminar toda las filas cuando el rango a:f se encuentre totalmente vacías

2) Eliminar toda la fila, si dentro del rango a:f uno de ellos se encuentre vacía

1 Respuesta

Respuesta
3

Cuántas filas tienes con al menos un dato, es decir, hasta donde tienes datos.

Tienes fórmulas en las celdas o son solamente datos.

Seria más o menos 80.000 filas

Como veras mi gran experto solo en caso de que la columna se encuentre vacía, me encantaría que la macro elimine completa la fila desde a:f, si hay datos en la columna A y las demás están vacías, que no la elimine,

Saludos

Quisiera aclarar solamente si la fila"A" se encuentre vacía, que elimine totalmente la fila por más que haya datos en la fila b, c, de o f, si en caso que en la columna A haya por ejemplo algún dato de texto, numero o fecha, y las siguientes filas b, c, de o f estén vacías, que conserve la fila, ya que precisamos el dato que contenga la columna A

Y no hay fórmulas, porque es una exportación de un sistema contable mi gran experto, las celdas en amarillo como esta en la imagen es la que debe eliminarse y las que están en rosa son las que debe conservarse

Está muy confuso.

Creo que en resumen quieres esto:

Si la celda en A está vacía, entonces borrar la fila.

Exacto, perdón por enredarme todo, es así mismo tal cual como lo expones mi gran experto, si la celda A esta vacío que borre completo y si tiene datos que conserve,

Saludos

Prueba lo siguiente:

Sub eliminar_filas()
  Range("A1").AutoFilter
  ActiveSheet.Range("A1:F" & Range("A:F").Find("*", , xlValues, 2, 1, 2).Row).AutoFilter 1, "="
  ActiveSheet.AutoFilter.Range.Offset(1).EntireRow.Delete
  Range("A1").AutoFilter
End Sub

Experto Dante, probé la macro pero no me esta eliminando las filas, por más que la celda A:A este vacía, queda intacto, ¿no se si omití algún proceso? Porque ejecute la macro y no elimina la fila completa cuando la celda "a" esta vacía :(

Luego de pasar la macro quedo así, y me percato que debe hacer una excepción, si hay valores numéricos en la celda DE, E & F, y la celda "a" de esa fila este vacía, no debe eliminarla,

Las filas en amarillo son porque toda fila esta vacía, entonces debe eliminarse esa fila, y otra variable es que la celda "a" esta vacía, pero hay valores en la celda "B" y "c" a veces solo en la "b" o "c", entonces la macro debe eliminar la fila completa incluyendo la celda "a", pero en el caso que haya valores numéricos en la celda DE, E, & F y las anteriores "A", "B", Y "C" estén vacías, favor que no elimine ya que se debe visualizar los totales tal como se visualiza en la línea de color rosa de la imagen,

Y cuando haya datos de texto o fecha en la celda "a" que no elimine la fila, espero no enredarlo con mi explicación =(

De hecho sí. Está muy enredado.

¿Podrías hacerlo más simple?

Podrías responder lo siguiente y en este orden:

  1. ¿Tienes fórmulas en las celdas?
  2. ¿En cuáles celdas tienes fórmulas?
  3. ¿Qué fórmulas tienes?
  4. ¿Tienes celdas combinadas?

Mi gran experto van mis respuestas,

1) No tiene fórmulas

2) No hay celdas con fórmulas

3) No utiliza ninguna fórmula porque es una exportación en excel desde la base de datos de un sistema contable

4) No hay celdas combinadas

Mi gran experto Dante

Tratare de simplificar mi pregunta y que sea más comprensible porque realmente lo enrede

Quisiera que la macro elimine la fila completa según estas 2 condiciones

1) Si la celda A esta vacía y a su vez las celdas B, C, DE, E & F se encuentren vacías quiero que elimine totalmente la fila por encontrarse absolutamente vacías

2) Si la celda A esta vacía pero hay contenidos en la celda B o C, eliminar completamente la fila

Y no eliminar si se halla en esta condición

1) Que haya contenido en la celda A y la celda B, C, DE, E & F estén vacías

2) La celda A este vacía, pero hay contenido en la celda DE, E & F

Si me podrías ayudar por favor te lo voy a agradecer,

Prueba la siguiente, para 80,000 filas tarda 2 segundos.

Sub eliminar_fila()
  Dim a As Variant, b As Variant, dato As Variant
  Dim i As Long, j As Long, k As Long, lr As Long
  '
  lr = Range("A:F").Find("*", , xlValues, xlPart, xlByRows, xlPrevious).Row
  a = Range("A1", "F" & lr).Value
  ReDim b(1 To UBound(a, 1), 1 To UBound(a, 2))
  '
  For i = 1 To UBound(a, 1)
    If Not (a(i, 1) = "" And a(i, 4) & a(i, 5) & a(i, 6) = "") Then
      k = k + 1
      For j = 1 To UBound(a, 2)
        dato = a(i, j)
        If j = 1 Then
          If IsDate(dato) Then
          ElseIf IsNumeric(dato) Then
            dato = "'" & dato
          End If
        End If
        b(k, j) = dato
      Next j
    End If
  Next
  Range("A1").Resize(UBound(b, 1), UBound(b, 2)).Value = b
End Sub

Muchísimas gracias Mi gran experto!

Complacido por ayudarte, gra cias por comentar.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas