eliminare righe con macro



  • eliminare righe con macro
    di king.carlo (utente non iscritto) data: 09/06/2016 18:27:42

    Salve,
    ho la necessità di cancellare delle righe da un foglio Excel che non contengano un testo: praticamente il mio foglio ha una sola colonna(A) e circa 5000 righe; le righe contengono in modo alternato NUMERO-ORARIO-TESTO-RIGA VUOTA, e così via per tutte le 5000 righe. A me servono solo le righe che contengono il testo. Ho provato con "vai a formato speciale" , ma l'unica cosa che riesco ha cancellare sono le righe vuote. Come posso fare a risolvere tale problema. Grazie in anticipo per la vostra collaborazione



  • di alfrimpa data: 09/06/2016 18:37:03

    Ciao Carlo

    Allega un file di esempio con una ventina di record.

    Alfredo





  • di cromagno data: 09/06/2016 20:28:48

    Ciao a tutti,

    potresti usare un codice del genere (sotto)...

    Ti allego un file d'esempio.
     
    Sub Righe_Vuote()
    Dim uRiga As Long, i As Long, Vuote As Range, Prima As Long
    
    uRiga = Range("A" & Rows.Count).End(xlUp).Row
    For i = 1 To uRiga
        If Range("A" & i).Value = "" Then
            Set Vuote = Range("A" & i)
            Prima = i
            GoTo ciclo
        End If
    Next i
    
    ciclo:
    For i = Prima To uRiga
        If Range("A" & i).Value = "" Then
            Set Vuote = Union(Vuote, Range("A" & i))
        End If
    Next i
    
    Vuote.Delete Shift:=xlUp
    
    Set Vuote = Nothing
    End Sub



  • di king.carlo (utente non iscritto) data: 09/06/2016 21:52:56

    ho provato sia il file allegato che la sub postata , ma non funzionano, nel senso che io ho la necessità di eliminare sia le righe dove ci sono i numeri (1;2;3;....) che gli orari (00:00:00 ......). visto che la seguenza di come è strutturato il foglio è costante, ossia le righe che contengo i numeri si ripetono ogni 4 righe, così come per gli orari, forse andrebbe bene una sub che elimina le righe con un incremento di 4.
    grazie per la vostra disponibilità,
    saluti Carlo
    P.S. quale manuale (possibilmente in italiano) esaustivo e semplice di VBA mi consigliate? Grazie



  • di alfrimpa data: 09/06/2016 23:17:01

    Ciao Carlo

    Forse se alleghi un tuo file di esempio forse facciamo prima.

    Per quanto riguarda il manuale se ti fai un giro su Amazon ne trovi diversi.

    Io opterei per quello di Gianni Giaccaglini "Excel e Office VBA" Ed. Hoepli; è un po' datato ma per chi vuole iniziare va benissimo.

    Poi su questo sito trovi anche un corso a questo indirizzo

    w w w.excelvba.it/corso/


    oppure guarda qui

    h t t p://forum.wintricks.it/showthread.php?t=155252-vba/

    Alfredo








  • di cromagno data: 10/06/2016 00:49:18

    Ciao,

    io avevo capito che volevi eliminare solo le righe vuote.

    Allora prova in questo modo (codice sotto)...

    Ti riallego il nuovo file.
     
    Sub Solo_Testo()
    Dim uRiga As Long, i As Long, Altro As Range, x
    
    uRiga = Range("A" & Rows.Count).End(xlUp).Row
    Set Altro = Union(Cells(1, 1), Cells(2, 1), Cells(4, 1))
    
    For i = 5 To uRiga
        If (i + 1) Mod 4 <> 0 Then
            Set Altro = Union(Altro, Range("A" & i))
        End If
    Next i
    
    Altro.Delete Shift:=xlUp
    
    Set Altro = Nothing
    End Sub
    



  • di cromagno data: 10/06/2016 00:51:18

    Ciao,

    io avevo capito che volevi eliminare solo le righe vuote.

    Allora prova in questo modo (codice sotto)...

    Ti riallego il nuovo file. 

    [EDIT]
    Ho dimenticato di modificare il nome al pulsante
     
    Sub Solo_Testo()
    Dim uRiga As Long, i As Long, Altro As Range, x
    
    uRiga = Range("A" & Rows.Count).End(xlUp).Row
    Set Altro = Union(Cells(1, 1), Cells(2, 1), Cells(4, 1))
    
    For i = 5 To uRiga
        If (i + 1) Mod 4 <> 0 Then
            Set Altro = Union(Altro, Range("A" & i))
        End If
    Next i
    
    Altro.Delete Shift:=xlUp
    
    Set Altro = Nothing
    End Sub
    



  • di king.carlo (utente non iscritto) data: 10/06/2016 18:29:53

    Funziona!!!
    grazie a tutti per la collaborazione
    Saluti Carlo