Excel: ¿Eliminar fila si la celda en cierta columna está en blanco?

23

Soy un novato en Excel, así que discúlpeme si esto es algo fácil de hacer. He examinado muchas opciones, pero no pude encontrar lo que necesitaba.

Básicamente, quiero eliminar todas las filas que no contienen un valor en la columna C. ¿Cómo haría para hacer esto?

Estoy haciendo esto manualmente ahora para más de 5000 productos y me está volviendo loco.

John
fuente
2
¿Por qué se hizo una pregunta sobre Stack OverFlow con soluciones VBA migradas a Super User?
brettdj

Respuestas:

31

Puede hacer esto muy rápidamente si las celdas están realmente en blanco usando SpecialCells

Manual

  • Seleccionar columna C
  • Presione F5, luegoSpecial
  • Verifique Blanks, luego OK(vea este paso en la imagen en la parte inferior)
  • Elimine las filas que ahora están seleccionadas (por ejemplo, haga clic con el botón derecho en la selección> Eliminar celdas ... > Toda la fila o mediante la cinta de opciones (consulte la segunda captura de pantalla))

VBA

Sub QuickCull()
    On Error Resume Next
    Columns("C").SpecialCells(xlBlanks).EntireRow.Delete
End Sub

Captura de pantalla que muestra el menú Ir a especial -> espacios en blanco Captura de pantalla que muestra cómo usar la cinta para eliminar filas enteras en la selección

brettdj
fuente
8

Aquí hay un método manual fácil

  1. Aplique una Auto Filtera su hoja
  2. Filtrar en columna En Cblanco
  3. Seleccionar todas las filas visibles
  4. Eliminar filas
  5. Eliminar filtro

Este proceso puede automatizarse con VBA si es necesario. Intente ejecutar la grabadora de macros para comenzar

Chris Neilsen
fuente
Simple pero efectivo. ¡Haz maravillas!
Tiana987642
2

Creo que lo más fácil suponiendo que no tenga un montón de otras fórmulas en las otras celdas es simplemente ordenar todo por Columna C y luego eliminar todas las filas que tienen un espacio en blanco para la columna C (la función de clasificación pondrá los valores en blanco para la columna C en la parte superior del archivo).

En resumen:

  • Haga clic en la celda de papel doblada sobre la celda marcada "1" y a la izquierda de la celda marcada "A" (para resaltar todo)
  • Haga clic en Datos y luego ordene
  • Ordene por Columna C y haga que los valores más pequeños sean los primeros
  • Simplemente resalte las filas hacia abajo hasta llegar a la primera fila con un valor para la Columna C, y elimine todo lo que destacó

fuente
0

Esto debería funcionar.

Columns("C:C").Select
Set rngRange = Selection.CurrentRegion
lngNumRows = rngRange.Rows.Count
lngFirstRow = rngRange.Row
lngLastRow = lngFirstRow + lngNumRows - 1
lngCompareColumn = ActiveCell.Column
For lngCurrentRow = lngLastRow To lngFirstRow Step -1
If (Cells(lngCurrentRow, lngCompareColumn).Text = "") Then _
Rows(lngCurrentRow).Delete
Next lngCurrentRow
Mella
fuente
-1

Puede poner este código en el Módulo de hoja (haga clic con el botón derecho del mouse en la pestaña Hoja y seleccione "Ver código"):

Sub Delete_Blank_Rows()


'Deletes the entire row within the selection if the ENTIRE row contains no data.

'We use Long in case they have over 32,767 rows selected.

Dim i As Long
Dim LastRow As Integer

'We turn off calculation and screenupdating to speed up the macro.

 With Application
     .Calculation = xlCalculationManual
     .ScreenUpdating = False

     'Reduce the work on the calc and define the range

     LastRow = Range("A" & Rows.Count).End(xlUp).Row
     Range("A2:A" & LastRow).Select

     'We work backwards because we are deleting rows.

     For i = Selection.Rows.Count To 1 Step -1
          If WorksheetFunction.CountA(Selection.Rows(i)) = 0 Then
              Selection.Rows(i).EntireRow.Delete
          End If
     Next i

    .Calculation = xlCalculationAutomatic
    .ScreenUpdating = True
End With

End Sub
David
fuente
1
Esto elimina filas donde toda la fila está en blanco? -si lo hace, es similar a la respuesta @drnewman. La pregunta dice específicamente: Eliminar fila si la celda en cierta columna está en blanco.
Davidenko
¡Bienvenido a Super User! Por favor lea la pregunta otra vez cuidadosamente. Su respuesta no responde a la pregunta original.
DavidPostill