Come rimuovere le righe duplicate in base ad alcune colonne


11

Ho un foglio Excel che contiene righe duplicate

Voglio rimuovere una riga se le sue colonne ACDEF sono uguali (Ignora B durante il calcolo dei duplicati ma rimuovilo durante la rimozione di una riga)

Al momento ignora B durante il confronto e la cancellazione.


È possibile aggiungere una schermata con un prima e dopo desiderato? Sto lottando per immaginare di cosa hai bisogno (scusa)
Dave,

Quindi, qualsiasi valore duplicato nelle colonne A, C, D, E, F comporterà la cancellazione di un'intera riga, mantenendo la prima istanza del duplicato? Cosa succede se A1 corrisponde a A2, ma C2 corrisponde a C3, la riga 2 viene eliminata?
Raystafarian,

Risposte:


18

In Excel 2013

  1. Seleziona tutti i dati
  2. Seleziona la scheda Dati -> Rimuovi duplicati
  3. Seleziona "Le mie colonne hanno intestazioni" se i tuoi dati hanno intestazioni di colonna.
  4. Deseleziona tutte le colonne che NON desideri utilizzare in confronto
  5. premere OK

Fatto


No, cerca righe simili ad altre righe. Ci ho pensato anche io, ma è una soluzione a un'altra domanda :)
Garrulinae

@Garrulinae Cosa stai dicendo, puoi spiegare come non funziona? Sembra la risposta corretta alla domanda di OP.
TheCrazyProgrammer

@TheCrazyProgrammer - Guardando oltre 2 anni dopo, vedo che la domanda del PO " Voglio rimuovere una riga se le sue colonne ACDEF sono uguali " può essere interpretata in due modi diversi. Ho pensato che se queste colonne fossero uguali tra loro all'interno di questa riga . Questa risposta presuppone che ciò significhi se i valori nelle colonne in questa riga sono gli stessi di un'altra riga . Con il senno di poi, questo assunto sembra essere stato corretto, soprattutto perché è stato contrassegnato come la risposta corretta.
Garrulinae

@Garrulinae Gotcha. Ora ho visto e capito la tua risposta. Da un lato, sono sorpreso che la funzionalità richiesta da OP (e da me) esista come un semplice pulsante in Excel, ma googling ti dà un sacco di articoli che fanno cose complicate che per un momento mi hanno fatto dubitare di questa risposta.
TheCrazyProgrammer

@TheCrazyProgrammer, ho anche una nota a margine: mi sono appena reso conto che è stato l'OP a pubblicare questa risposta! È ovviamente la risposta corretta, ma è un peccato che la domanda non sia stata più chiara.
Garrulinae,

1

Se ti ho capito correttamente, date le righe 1 e 2, vuoi eliminare una riga 2 se e solo se A1 = A2, C1 = C2, D1 = D2, E1 = E2 e F1 = F2.

Questo è quello che mi è venuto in mente. Probabilmente potrebbe essere più breve ma fa il trucco:

Sub DeleteDuplicate()
Dim current As String
ActiveSheet.Range("A1").Activate
Do While ActiveCell.Value <> ""
    current = ActiveCell.Address
    ActiveCell.Offset(1, 0).Activate
    Do While ActiveCell.Value <> ""
        If ((ActiveSheet.Range(current).Value = ActiveCell.Value) And (ActiveSheet.Range(current).Offset(0, 2).Value = ActiveCell.Offset(0, 2).Value) And (ActiveSheet.Range(current).Offset(0, 3).Value = ActiveCell.Offset(0, 3).Value) And (ActiveSheet.Range(current).Offset(0, 4).Value = ActiveCell.Offset(0, 4).Value) And (ActiveSheet.Range(current).Offset(0, 5).Value = ActiveCell.Offset(0, 5).Value)) Then
            ActiveSheet.Rows(ActiveCell.Row).Delete
        Else
        ActiveCell.Offset(1, 0).Activate
        End If
    Loop
    ActiveSheet.Range(current).Offset(1, 0).Activate
Loop
End Sub

Ciò che fa è passare in rassegna tutte le linee rimanenti utilizzando ActiveCell come puntatore alla riga in fase di valutazione e memorizzando la cella della riga "originale" nella variabile corrente . Una volta terminato il ciclo, la cella sotto la corrente viene attivata e il ciclo di valutazione interno ricomincia.

Se ho fatto un casino da qualche parte, non esitare a dirmelo :)


1

Aggiungi questa formula in ogni riga, ad esempio; nella colonna G:

=IF(AND(A2=C2,A2=D2,A2=E2,A2=F2),"DELETE ME","")

Questo darà un risultato come:

A   B   C   D   D   F   G
-   -   -   -   -   -   -
x   o   x   x   x   x   DELETE ME
x   x   x   x   x   o   
x   x   x   x   x   x   DELETE ME
x   o   o   x   x   x   

Quindi crea un filtro sulla colonna G per le righe che dicono "ELIMINA ME" ed eliminale.


0

@ Garrulinae

Ho usato la tua idea come ispirazione. Avevo molte righe e quello che volevo era eliminare le righe contenenti valori duplicati di una colonna. Se uso Rimuovi duplicati su quella colonna, rimuoverò solo i dati da quella colonna e non l'intera riga. Volevo eliminare ogni 2a e 3a fila da tutta la tabella. Quindi, quello che ho fatto ho creato una nuova colonna e lasciato vuoto il valore della prima riga mettimi in seconda e terza riga. E poi ho copiato i valori delle prime tre righe di quella particolare colonna (non l'intera riga) e incollato sull'intera colonna della tabella. Ora, avevo "cancellami" in ogni seconda e terza riga dell'intera colonna. Quindi devo solo ordinare i valori di quella colonna ed eliminare tutte le righe contenenti eliminami. Puoi usare la stessa soluzione se vuoi eliminare ogni 2 °, 3 ° e 4 ° o 2 °, 3 °, 4 ° e 5 ° circa ...

Spero che aiuti qualcuno ....


2
Non capisco perfettamente cosa stai dicendo. Invece di descrivere quello che hai fatto, si può mostrare noi ciò che (s) formula utilizzata e presentare alcuni dati di esempio, e mostrare come le tue opere su tali dati?
Scott,
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.