Excel: Supprimez la ligne si une cellule dans une colonne est vide?

Je suis un débutant complet pour Excel, s'il vous plaît, excusez-moi si cela est facile à faire. J'ai examiné beaucoup d'options mais je n'ai pas pu trouver ce dont j'avais besoin.

Fondamentalement, je veux supprimer toutes les lignes qui ne contiennent pas de valeur dans la colonne C. Comment procéder?

Je le fais manuellement maintenant pour plus de 5000 produits et cela me rend fou.

Vous pouvez le faire très rapidement si les cellules sont vraiment vierges à l'aide de SpecialCells

Manuel

  • Sélectionnez la colonne C
  • Appuyez sur F5 , puis sur Special
  • Vérifiez les Blanks , puis OK (voir cette étape dans la photo en bas)
  • Supprimez les lignes qui sont maintenant sélectionnées (p. Ex. Clic droit dans la sélection> Effacer les cellules … > Ligne entière ou via le ruban (voir deuxième capture d'écran))

VBA

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

Capture d'écran montrant le menu Go To Special -> BlanksCapture d'écran montrant comment utiliser le ruban pour supprimer des lignes entières dans la sélection

Voici une méthode manuelle facile

  1. Appliquer un Auto Filter sur votre feuille
  2. Filtrer sur la colonne C Vide
  3. Sélectionnez toutes les lignes visibles
  4. Supprimer les lignes
  5. Supprimer le filtre

Ce processus peut être automatisé avec VBA si nécessaire. Essayez d'exécuter l'enregistreur de macro pour commencer

Je pense que la chose la plus simple, en supposant que vous ne disposez pas d'autres formules dans les autres cellules, consiste à trier tout par la colonne C, puis à supprimer toutes les lignes qui ont un blanc pour la colonne C (la fonction de tri mettra les valeurs vierges Pour la colonne C en haut du fichier).

En résumé:

  • Cliquez sur la cellule de papier pliée au-dessus de la cellule marquée «1» et à gauche de la cellule marquée «A» (pour mettre en surbrillance tout)
  • Cliquez sur Données, puis trier
  • Trier par Colonne C, et faire les plus petites valeurs être d'abord
  • Il suffit de mettre en surbrillance les lignes jusqu'à ce que vous frappiez la première ligne avec une valeur pour la colonne C et effacez tout ce que vous avez mis en surbrillance

Cela devrait fonctionner.

 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 

Vous pouvez mettre ce code dans Sheet Module (clic droit de la souris Cliquez sur l'onglet de la feuille et sélectionnez "Afficher le code"):

 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