Risultati da 1 a 15 di 15

Discussione: Eliminare righe sotto certe condizioni



  1. #1
    L'avatar di saturn87
    Clicca e Apri
    Data Registrazione
    Jul 2016
    Località
    toscana
    Messaggi
    14
    Versione Office
    2010
    Likes ricevuti
    1

    Eliminare righe sotto certe condizioni

    Buongiorno ho un foglio di calcolo con circa 10000 righe e 50 colonne.

    Come posso fare per eliminare tutte le righe che nella colonna C hanno un valore minore di 2 ?

    Grazie.

  2. #2
    L'avatar di GiuseppeMN
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Mantova
    Messaggi
    864
    Versione Office
    2000 - 2013
    Likes ricevuti
    285
    Likes dati
    160

    Re: Eliminare righe sotto certe condizioni

    Citazione Originariamente Scritto da saturn87 Visualizza Messaggio
    Buongiorno ho un foglio di calcolo con circa 10000 righe e 50 colonne.

    Come posso fare per eliminare tutte le righe che nella colonna C hanno un valore minore di 2 ?

    Grazie.
    Buongiorno, Saturn87;
    proverei con un Codice VBA.
    Codice: 
    Option Explicit
    
    Sub Elimina_righe()
    Application.ScreenUpdating = False
    Dim x As Long
    
        For x = 10000 To 1 Step -1
            If Cells(x, 3) < 2 Then Cells(x, 3).EntireRow.Delete
        Next x
    Application.ScreenUpdating = True
    End Sub

    A disposizione.

    Buon Lavoro e buona serata.

    Giuseppe
    Windows XP Excel 2000 - Windows 10 Excel 2013

  3. #3

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Cosenza
    Età
    45
    Messaggi
    2810
    Versione Office
    Excel 2013
    Likes ricevuti
    1022
    Likes dati
    979

    Re: Eliminare righe sotto certe condizioni

    Se per "eliminare" intendi "svuotare" prova questa macro:
    Codice: 
    Sub Elimina()
    Dim uRiga As Long
    Dim iRow As Long
    
    
    uRiga = Range("C" & Rows.Count).End(xlUp).Row
    For iRow = 1 To uRiga
        If Cells(iRow, 3) < 2 Then
            Cells(iRow, 3) = ""
        End If
    Next
    End Sub
    P.S. Visto che sei nuovo del Forum, è gradita una presentazione QUI, ti consiglio anche di leggerti il “Regolamento” e di visitare la sezione “Annunci dello staff”,

    EDIT: @GiuseppeMN, non mi ero accorto che avevi già risposto.

  4. #4
    L'avatar di ggratis
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Lecce - Pisa
    Età
    45
    Messaggi
    737
    Versione Office
    Excel 2010
    Likes ricevuti
    257
    Likes dati
    215

    Re: Eliminare righe sotto certe condizioni

    Saluti,

    ...io insisto con qualcosa del genere da adattare al caso, è molto più veloce.
    http://www.forumexcel.it/forum/7-dom...e-elimina-riga

    gg

  5. #5

    L'avatar di ges
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Como
    Età
    53
    Messaggi
    7161
    Versione Office
    2011MAC 2016WIN
    Likes ricevuti
    2065
    Likes dati
    1301

    Re: Eliminare righe sotto certe condizioni

    Ciao a tutti,
    visto che non sono proprio 1000 ma ce ne potrebbe essere qualcuna in più o in meno ...
    Citazione Originariamente Scritto da saturn87 Visualizza Messaggio
    .... circa 10000 righe .....
    .
    .... farei una leggera modifica alla sub di Giuseppe (un saluto) così:
    Codice: 
    Option Explicit
    Sub Elimina_righe()
    Application.ScreenUpdating = False
    Dim x As Long, uRow As Long
    uRow = Cells(Rows.Count, 3).End(xlUp).Row
        For x = uRow To 1 Step -1
            If Cells(x, 3) < 2 Then Cells(x, 3).EntireRow.Delete
        Next x
    Application.ScreenUpdating = True
    End Sub
    Quando si scartano tutte le ipotesi possibili, quella che resta, anche se può sembrare improbabile, non può che essere quella giusta!

  6. #6

    L'avatar di ges
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Como
    Età
    53
    Messaggi
    7161
    Versione Office
    2011MAC 2016WIN
    Likes ricevuti
    2065
    Likes dati
    1301

    Re: Eliminare righe sotto certe condizioni

    Citazione Originariamente Scritto da ggratis Visualizza Messaggio
    Saluti,

    ...io insisto con qualcosa del genere da adattare al caso, è molto più veloce.
    http://www.forumexcel.it/forum/7-dom...e-elimina-riga

    gg
    Ciao Giuseppe,
    questa me la sono già messa nei miei preferiti ... in effetti è più veloce anche se su 1000 righe è poca cosa.
    Quando si scartano tutte le ipotesi possibili, quella che resta, anche se può sembrare improbabile, non può che essere quella giusta!

  7. #7
    L'avatar di Raffaele_53
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Binasco
    Età
    64
    Messaggi
    506
    Versione Office
    2007
    Likes ricevuti
    85
    Likes dati
    7

    Re: Eliminare righe sotto certe condizioni

    @Ges, sono 10000 righe

    Ciao a tutti, copio ggratis
    Se la Tabella inizia in A1 con dei TITOLI/NOMI, i dati in colonna C iniziano dalla riga2

    Codice: 
    Sub Elimina_Righe()
    Dim Ur
    Ur = Range("C" & Rows.Count).End(xlUp).Row
        Application.ScreenUpdating = False
        ActiveSheet.Range(Range("A1"), Range("$A$1").End(xlToRight)).AutoFilter Field:=3, Criteria1:="<2", Operator:=xlAnd
        ActiveSheet.Rows("2:" & Ur).SpecialCells(xlCellTypeVisible).Delete shift:=xlUp
        ActiveSheet.Range(Range("A1"), Range("$A$1").End(xlToRight)).AutoFilter
        Application.ScreenUpdating = True
    End Sub

  8. #8
    L'avatar di ggratis
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Lecce - Pisa
    Età
    45
    Messaggi
    737
    Versione Office
    Excel 2010
    Likes ricevuti
    257
    Likes dati
    215

    Re: Eliminare righe sotto certe condizioni

    Esattamente Raffaele (probabilmente nella soluzione che hai indicato è inutile la specifica shift:=xlup, perché se elimini l'intera riga si compattano di necessità; io infatti non ce l'avevo messa)...

    oppure, se i dati sono ordinati rispetto alla colonna C e se alla destra delle 50 colonne hai altro separato da una colonna vuota che non vuoi cancellare, puoi usare questa ulteriore soluzione:

    Codice: 
    Sub Macro2()
        Application.ScreenUpdating = False
        ActiveSheet.Range(Range("A1"), Range("$A$1").End(xlToRight)).AutoFilter Field:=3, Criteria1:= "<2", Operator:=xlAnd
        Intersect(Range("A:AX"), ActiveSheet.Range(Range("C2"), Range("$C$2").End(xlDown)).SpecialCells(xlCellTypeVisible).EntireRow).Select
        ActiveSheet.Range(Range("A1"), Range("$A$1").End(xlToRight)).AutoFilter
        Selection.Delete Shift:=xlUp
        Application.ScreenUpdating = True
    End Sub


    saluti
    gg

  9. #9
    L'avatar di Raffaele_53
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Binasco
    Età
    64
    Messaggi
    506
    Versione Office
    2007
    Likes ricevuti
    85
    Likes dati
    7

    Re: Eliminare righe sotto certe condizioni

    Ciao ggratis
    mi spieghi per favore la frase
    >>>perché se elimini l'intera riga si compattano di necessità

  10. #10

    L'avatar di ges
    Clicca e Apri
    Data Registrazione
    Jun 2015
    Località
    Como
    Età
    53
    Messaggi
    7161
    Versione Office
    2011MAC 2016WIN
    Likes ricevuti
    2065
    Likes dati
    1301

    Re: Eliminare righe sotto certe condizioni

    Citazione Originariamente Scritto da Raffaele_53 Visualizza Messaggio
    @Ges, sono 10000 righe

    ..
    Ops... mi era sfuggito uno zero!
    Quando si scartano tutte le ipotesi possibili, quella che resta, anche se può sembrare improbabile, non può che essere quella giusta!

  11. #11
    L'avatar di ggratis
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Lecce - Pisa
    Età
    45
    Messaggi
    737
    Versione Office
    Excel 2010
    Likes ricevuti
    257
    Likes dati
    215

    Re: Eliminare righe sotto certe condizioni

    Citazione Originariamente Scritto da Raffaele_53 Visualizza Messaggio
    Ciao ggratis
    mi spieghi per favore la frase
    >>>perché se elimini l'intera riga si compattano di necessità
    Ciao Raffaele,
    voglio dire che se tu hai questo:
    Excel
    A
    B
    C
    1
    a
    b
    c
    2
    s
    f
    1
    3
    s
    f
    2
    4
    s
    f
    1
    5
    s
    f
    4
    6
    s
    f
    5
    Sheet: Foglio1

    e vuoi eliminare le righe con valore in c<2, quindi la 2 e la 4, l'operazione che è svolta dall'istruzione
    Codice: 
    ActiveSheet.Rows("2:" & Ur).SpecialCells(xlCellTypeVisible).Delete
    una volta filtrate le celle da eliminare ottenendo, ti da automaticamente questo risultato:
    Excel
    A
    B
    C
    1
    a
    b
    c
    2
    s
    f
    2
    3
    s
    f
    4
    4
    s
    f
    5
    Sheet: Foglio1

    senza dover fare altro.

    Pensavo invece che fosse diverso il caso in cui non si volesse eliminare le righe ma solo cancellare i valori di un intervallo di celle e riportare su quelli le celle sottostanti, per compattare la tabella dei valori. In questo caso pensavo fosse necessaria l'istruzione shift:=xlup con i vari record ordinati rispetto alla colonna C; in realtà ho provato con degli esempi e non è necessaria neppure in questo caso, sebbene l'istruzione venga riportata se registri una macro dando il comando "elimina...", "sposta celle in alto"; con un insieme di record della tabella selezionati. E non serve neppure che i record siano ordinati

    Provo a spiegarti questa ulteriore cosa.
    Io avrei messo l'istruzione shift:=xlup in quest'altra situazione (ma, nel cercare di spiegarti ho fatto delle prove ed ho scoperto che non serve neppure in questo caso):
    partendo con questi dati
    Excel
    A
    B
    C
    D
    E
    F
    G
    1
    a
    b
    c
    d
    e
    f
    2
    s1
    f1
    1
    x1
    y1
    z1
    3
    s2
    f2
    2
    x2
    y2
    z2
    4
    s3
    f3
    1
    x3
    y3
    z3
    5
    s4
    f4
    4
    x4
    y4
    z4
    6
    s5
    f5
    5
    x5
    y5
    z5
    Sheet: Foglio1

    se io volessi eliminare i record della tabella abc con valori nella colonna c minori di 2, non potendo eliminare l'intera riga del foglio Excel perché cancellerei anche i valori della tabella def, dovrei selezionare le celle dei record e non le righe intere, quindi selezionate le celle dei record della riga 2 e 4 colonne abc l'istruzione
    Codice: 
      Selection.Delete Shift:=xlUp
    dovrebbe essere necessaria per cancellare i valori delle celle selezionate e riportare su le rimanenti, come da codice scritto anche dal registratore
    In realtà la stessa cosa la fa da sola istruzione
    Codice: 
      Selection.Delete
    Il perché lo ignoro.

    in entrambi i casi il risultato è questo
    Excel
    A
    B
    C
    D
    E
    F
    G
    1
    a
    b
    c
    d
    e
    f
    2
    s2
    f2
    2
    x1
    y1
    z1
    3
    s4
    f4
    4
    x2
    y2
    z2
    4
    s5
    f5
    5
    x3
    y3
    z3
    5
    x4
    y4
    z4
    6
    x5
    y5
    z5
    Sheet: Foglio1

    spero di esserti stato d'aiuto

    saluti
    gg

  12. #12
    L'avatar di Raffaele_53
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Binasco
    Età
    64
    Messaggi
    506
    Versione Office
    2007
    Likes ricevuti
    85
    Likes dati
    7

    Re: Eliminare righe sotto certe condizioni

    @ggratis
    Sono vecchio e tonto
    Capisco solo che se l'utente desidera eliminare righe (...Rows("2:" & Ur)...).delete
    Se desidera in determinate colonne farei dei "range".

    Come si comporta i "range" con celle filtrate non saprei (non ho provato)
    Però la Tua spiegazione, mi dice un "qualcosa" che forse non conosco--->inutile la specifica shift:=xlup

    Dim Ur... a me serve solo per semplificare alcune righe, tipo Le Tue
    Ex:--->Range(Range("C2"), Range("$C$2").End(xlDown)) a me basta scrivere --->Rows("2:" & Ur)
    Se sbaglio corregimi

  13. #13
    L'avatar di ggratis
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Lecce - Pisa
    Età
    45
    Messaggi
    737
    Versione Office
    Excel 2010
    Likes ricevuti
    257
    Likes dati
    215

    Re: Eliminare righe sotto certe condizioni

    ...beh! usando questo codice sulla doppia tabella dei precedenti post la specifica shift:=xlup è necessaria, evidentemente c'è da capirla bene
    Codice: 
    Sub Macro1()
        Application.ScreenUpdating = False
        With ActiveSheet.Range("A1").CurrentRegion
            .AutoFilter Field:=3, Criteria1:="<5", Criteria2:=">2", Operator:=xlAnd
            .Offset(1, 0).SpecialCells(xlCellTypeVisible).Select
            .AutoFilter
        End With
        Selection.Delete Shift:=xlUp
        ActiveSheet.Range("A1").Select
        Application.ScreenUpdating = True
    End Sub
    saluti
    gg

  14. #14
    L'avatar di Raffaele_53
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Binasco
    Età
    64
    Messaggi
    506
    Versione Office
    2007
    Likes ricevuti
    85
    Likes dati
    7

    Re: Eliminare righe sotto certe condizioni

    @ggratis
    Forse sbaglio, mà diciamo la stessa cosa, l'unica differenza che hai cambiato i parametri nella riga >2 & <5 nell'ultimo post?
    >>>AutoFilter Field:=3, Criteria1:="<5", Criteria2:=">2", Operator:=xlAnd

    Per i range, farò alcune prove.

  15. #15
    L'avatar di ggratis
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Lecce - Pisa
    Età
    45
    Messaggi
    737
    Versione Office
    Excel 2010
    Likes ricevuti
    257
    Likes dati
    215

    Re: Eliminare righe sotto certe condizioni

    Si Raff stiamo dicendo la stessa cosa, quello che sto cercando di capire bene è il funzionamento shift:=xlup rispetto al .Delete di celle selezionate. Poi su come le selezioni è altro aspetto dove ognuno sceglie la procedura che gli pare.
    Saluti
    GG

    Inviato dal mio GT-I9105P utilizzando Tapatalk

Discussioni Simili

  1. SOMMA sotto diverse condizioni
    Di Zakkino nel forum Domande su Excel in generale
    Risposte: 9
    Ultimo Messaggio: 17/06/16, 18:57
  2. come eliminare righe vuote, tra righe di testo in una pagina excel
    Di francesco71 nel forum Domande su Excel in generale
    Risposte: 9
    Ultimo Messaggio: 08/05/16, 14:13
  3. Ricerca valore all'interno di matrice sotto specifiche condizioni
    Di Zakkino nel forum Domande su Excel in generale
    Risposte: 6
    Ultimo Messaggio: 12/02/16, 18:08
  4. Ricerca valore max sotto diverse condizioni
    Di Zakkino nel forum Domande su Excel in generale
    Risposte: 33
    Ultimo Messaggio: 09/02/16, 20:37
  5. Raggruppare nominativi in base a certe condizioni
    Di Baloon_50 nel forum Domande su Excel VBA e MACRO
    Risposte: 31
    Ultimo Messaggio: 10/09/15, 14:55

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •