Excel: eliminare la riga se la cella in una determinata colonna è vuota?


23

Sono un principiante completo di Excel, quindi mi scusi se questo è qualcosa di facile da fare. Ho esaminato molte opzioni ma non sono riuscito a trovare ciò di cui avevo bisogno.

Fondamentalmente, voglio eliminare tutte le righe che non contengono un valore nella colonna C. Come farei per fare questo?

Lo sto facendo manualmente adesso per oltre 5000 prodotti e mi sta facendo impazzire.


2
Perché è stata posta una domanda su Stack OverFlow con soluzioni VBA migrate a Super User?
Brettdj,

Risposte:


31

Puoi farlo molto rapidamente se le celle sono veramente vuote usando SpecialCells

Manuale

  • Seleziona colonna C
  • Premere F5, quindiSpecial
  • Controlla Blanks, quindi OK(vedi questo passaggio nell'immagine in basso)
  • Elimina le righe ora selezionate (ad esempio, fai clic con il pulsante destro del mouse nella selezione> Elimina celle ... > Intera riga o tramite la barra multifunzione (vedi la seconda schermata))

VBA

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

Schermata che mostra il menu Vai a speciale -> Spazi vuoti Schermata che mostra come utilizzare la barra multifunzione per eliminare intere righe nella selezione


8

Ecco un semplice metodo manuale

  1. Applica un Auto Filteral tuo foglio
  2. Filtro sulla colonna CVuoto
  3. Seleziona tutte le righe visibili
  4. Elimina righe
  5. Rimuovi filtro

Questo processo può essere automatizzato con VBA, se necessario. Prova ad avviare il registratore di macro per iniziare


Semplice ma efficace. Fai meraviglie!
Tiana987642,

2

Penso che la cosa più semplice supponendo che tu non abbia un sacco di altre formule nelle altre celle sia semplicemente ordinare tutto per colonna C e quindi eliminare tutte le righe che hanno uno spazio vuoto per la colonna C (la funzione di ordinamento metterà i valori vuoti per la colonna C nella parte superiore del file).

In sintesi:

  • Fare clic sulla cella di carta piegata sopra la cella contrassegnata con "1" e alla sinistra della cella contrassegnata con "A" (per evidenziare tutto)
  • Fai clic su Dati, quindi ordina
  • Ordina per Colonna C e imposta per primi i valori più piccoli
  • Basta evidenziare le righe verso il basso fino a quando non si colpisce la prima riga con un valore per la colonna C ed eliminare tutto ciò che è stato evidenziato

0

Questo dovrebbe funzionare.

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

-1

Puoi inserire questo codice nel Modulo fogli (tasto destro del mouse sulla scheda Foglio e selezionare "Visualizza codice"):

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

1
Questo elimina le righe in cui l'intera riga è vuota? -se lo fa, è simile alla risposta di @drnewman. La domanda afferma specificamente: Elimina la riga se la cella in una determinata colonna è vuota.
Davidenko,

Benvenuto in Super User! Si prega di leggere di nuovo attentamente la domanda. La tua risposta non risponde alla domanda originale.
DavidPostill
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.