elimina valori doppi in excel



  • elimina valori doppi in excel
    di Excel 2007 (utente non iscritto) data: 02/08/2013 15:46:32

    Ciao a tutti qualcuno sa dirmi come selezionare all'interno di una colonna i valori doppi (sia di testo che numerici) ed eliminarli entrambi? cioè come eliminari entrambi i valori duplicati!

    Grazie e mille!


  • bruna
    di bruna (utente non iscritto) data: 02/08/2013 15:48:15

    volevo solo dire il mio nome sono Bruna!
    grazie a tutti


  • Elimina valori doppi
    di Santuberto (utente non iscritto) data: 02/08/2013 16:39:47

    In Excel 2007: seleziona da Dati ==> Rimuovi duplicati. Cordiali saluti.


  • Duplicati
    di Santuberto (utente non iscritto) data: 02/08/2013 16:44:29

    Ho toppato! La mia soluzione non serve: tu li volevi eliminare entrambi. Mi spiace, non ti so aiutare.



  • di isy data: 02/08/2013 18:59:52

    Ciao

    In colonna A inserisci i valori da cercare
    124
    Pippo
    Casa

    Per ottenere il risultato in colonna B1
    Inserisci la seguente formula:

    =SE(CONTA.SE(A:A;A1)=1;A1;"")

    e trascina in basso la formula




     
    
    
    



  • di nichicanta (utente non iscritto) data: 02/08/2013 19:48:05

    Carissimi amici, poiché mi sono appassionato molto a questo bellissimo forum e voglio anche io nel mio piccolo contribuire ad aiutare altri che come me, non hanno tanta esperienza e conoscenza di programmazione, qualora decideste di voler effettuare la cancellazione del dato doppio in una colonna specifica, con vba, allego il codice che utilizzo io e che fa quanto chiede l'amica Buna.

    P.S. ho commentato ciò che fa questo codice.
     
    Sub Elimina_dato_duplicato()
    'Questo codice ordina i dati nella seconda
    'colonna del Foglio1 ed elimina le righe che
    'contengono dati duplicati (solo una riga e lascia l'altra con il dato trovato duplicato).
    Application.ScreenUpdating = False
    Range("B2:B8000").Select
    Selection.Sort Key1:=Range("B2"), Order1:=xlAscending, Header:=xlGuess, _
    OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
    DataOption1:=xlSortNormal
    Set currentCell = Worksheets("Foglio1").Range("B2")
    Do While Not IsEmpty(currentCell)
    Set nextCell = currentCell.Offset(1, 0)
    If nextCell.Value = currentCell.Value Then
    currentCell.EntireRow.Delete
    End If
    Set currentCell = nextCell
    Loop
    Range("B2").Select
    End Sub
    



  • di nichicanta (utente non iscritto) data: 02/08/2013 19:53:47

    scusatemi ho postato il codice sbagliato, questo è quello che elimina entrambi i dati doppi. il precedente eliminava solo 1.
    Vi saluto.
     
     'Questa routine elimina tutte e due le righe doppie
     
    
     Sub Elina_Tutti_I_Doppioni()
     Dim LastRow As Long, K As Long, MemoCanc As Boolean
     'Questo codice ordina i dati rispetto alla
     'colonna B del Foglio1 ed elimina sia
     'le dupliche che l'origine.
     On Error GoTo 50
     With Worksheets("Foglio1")
    Application.ScreenUpdating = False
     .UsedRange.Sort .Range("B2"), Header:=xlGuess
     LastRow = WorksheetFunction.CountIf(.Range("B2:B10000"), "<>")
     If LastRow > 1 Then LastRow = LastRow + 3 Else Exit Sub
     For K = LastRow To 4 Step -1
     If .Cells(K, 2) = .Cells(K - 1, 2) Then 'Finchè le trova uguali ..
     .Cells(K, 2).EntireRow.Delete '.. elimina la duplica ..
     MemoCanc = True '.. e si memorizza un flag per l'origine.
     Else 'Quando non le trova uguali ..
     If MemoCanc Then '.. entra solo se ha in memoria ..
     .Cells(K, 2).EntireRow.Delete '.. qualcosa da eliminare ..
     MemoCanc = False '.. quindi resetta.
     End If
     End If
     Next K
    Application.ScreenUpdating = True
     .Range("B4").Select
     End With
     Exit Sub
    50:  Application.ScreenUpdating = True: MsgBox Err.Description
     End Sub
    



  • di HarryBosch data: 02/08/2013 22:40:13

    Ciao Ragazzi
    veramente molto "furba" la formula di Isy e funzionale alla richiesta.

    Per quanto riguarda il vba, ci sarebbe il vantaggio di evitare le celle vuote, ma bisogna capire le esigenze della nostra amica, che magari non ha mai impostato una macro: eventualmente gli spieghiamo come fare ^_^

    @ Nichicanta
    il codice fa il suo lavoro anche se piuttosto ridondante. Puntualizzerei che prende in esame la colonna B e che controlla i valori lungo tale colonna a partire dalla 4° riga (For K = LastRow To 4): ovviamente si devono adattare colonna e partenza.

    Allego una revisione del codice, che mi sembra più snella e "leggibile": l'indentazione è un requisito fondamentale per renderlo leggibile, e vi consiglio vivamente di strutturare sempre le vostre routine.
    Esiste anche uno strumento apposito per implementare l'editor del vba: cercate "add-in Indenter VBA" sul web
     
    'controlla la colonna A a partire dalla seconda riga
    
    Sub Elina_Tutti_I_Doppioni_2()
        Dim LastRow As Long, K As Long, MemoCanc As Variant
        
        Application.ScreenUpdating = False
    
        With ActiveSheet
            .Columns("A").Sort .[a1], Header:=xlGuess
            LastRow = [COUNTA(A:A)]
     
            For K = LastRow To 2 Step -1
                If .Cells(K, 1) = .Cells(K - 1, 1) Or MemoCanc = .Cells(K, 1) Then
                    MemoCanc = .Cells(K, 1)
                    .Rows(K).EntireRow.Delete
                End If
            Next
        End With
      
        Application.ScreenUpdating = True
    End Sub



  • di isy data: 03/08/2013 00:22:13

    Ciao HarryBosch

    Cit: Per quanto riguarda il vba, ci sarebbe il vantaggio di evitare le celle vuote, ma bisogna capire le esigenze della nostra amica, che magari non ha mai impostato una macro: eventualmente gli spieghiamo come fare ^_^

    Ho inserito la precedente formula in vba
    Il codice elimina e raggruppa le righe sul foglio
    Nota: con la formula che ho inserito non viene fatta distinzione tra i caratteri maiuscoli e minuscoli.
    Scrivendo il codice in questo modo si inseriscono i risultati in un unico ciclo
    Al termine raggruppo i valori presenti

     
    Sub Cancella_Doppioni()
      Dim LastRow As Long
      Const WS As String = "Foglio1"
      Const ListCol As String = "A"
      Const StartRow As Long = 1
      LastRow = Worksheets(WS).Cells(Rows.Count, ListCol).End(xlUp).Row
      Application.ScreenUpdating = False
      With Worksheets(WS).Cells(StartRow, ListCol).Resize(LastRow - StartRow + 1)
        .Value = Evaluate("IF(COUNTIF(A" & StartRow & ":A" & LastRow & ", A" & StartRow & ":A" & LastRow & ")=1,A" & StartRow & ":A" & LastRow & ","""")")
        On Error Resume Next
        .SpecialCells(xlBlanks).Delete xlShiftUp
        On Error GoTo 0
      End With
      Application.ScreenUpdating = True
    End Sub
    



  • di bruna (utente non iscritto) data: 27/08/2013 15:42:05

    ciao ho visto solo oggi le vs. risposte, grazie a tutti
    grazie a isy che mi ha permesso di risolvere il mio problema, e ... si in effetti non so usare le macro...non so neanche bene cosa siano.. sono proprio una profana di excel!

    Grazie
    Bruba