eliminare righe



  • eliminare righe
    di max (utente non iscritto) data: 21/03/2013 21:09:03

    ciao
    per cortesia avrei la necessità di modificare il codice che ho postato
    Nel mio foglio di lavoro devo eliminare le righe doppie, il controllo viene eseguito sulla colonna A, il codice mi nasconde le righe io vorrei che venissero eliminate
    quale righe del codice devo modificare?

    Grazie per la vostra disponibilità

     
    Sub Nascondere_righe_doppie()
    Dim cell As Range, CellsToHide As Range, derLi As Long
    Application.ScreenUpdating = False
    derLi = Cells(Rows.Count, 1).End(xlUp).Row
    For i = derLi To 2 Step -1
    If Not IsError(Application.Match(Cells(i, 1).Value, _
    Range("A2:A" & i - 1), 0)) Then
    If CellsToHide Is Nothing Then
    Set CellsToHide = Cells(i, 1)
    Else: Set CellsToHide = Union(CellsToHide, Cells(i, 1))
    End If
    End If
    Next i
    If Not CellsToHide Is Nothing Then _
    CellsToHide.EntireRow.Hidden = True
    End Sub 



  • di HarryBosch data: 21/03/2013 21:31:59

    Così al volo, senza testare il codice visto che mi dici funziona a dovere, basta sostituire
    .Hidden = True con .Delete
    quindi, prima dell'end finale, l'istruzione diventerebbe:

    If Not CellsToHide Is Nothing Then _
    CellsToHide.EntireRow.Delete

    anche se a primo acchito, non mi sembra così "sicuro" questo codice...



  • di max (utente non iscritto) data: 21/03/2013 21:35:52

    ciao e grazie
    testato..e non mi piace molto neanche a me...
    mi potresti aiutare a trovare una soluzione??

    Ancora grazie



  • di HarryBosch data: 22/03/2013 18:51:40

    Ho rivisto un attimo la routine.
    prova così...
     
    Sub elimina_righe()
        Dim derLi As Long, i As Long
        Application.ScreenUpdating = False
    
        derLi = Cells(Rows.Count, 1).End(xlUp).Row
        'applico il filtro sulla colonna A
        Range("A2:A" & derLi).AdvancedFilter Action:=xlFilterInPlace, Unique:=True
        'ciclo dall'ultima alla prima cella: se la riga è nascosta la elimino (perché doppia)
        For i = derLi To 1 Step -1
            If Rows(i).Hidden = True Then Rows(i).Delete
        Next
    
        Application.ScreenUpdating = True
    End Sub
    



  • di max (utente non iscritto) data: 23/03/2013 10:06:00

    Grazie funziona benissimo....