Excel Forum Per condividere esperienze su Microsoft Excel

Macro - cancellare righe che contengono determinati valori

  • Messaggi
  • OFFLINE
    elxelx
    Post: 1
    Registrato il: 29/07/2015
    Città: MILANO
    Età: 35
    Utente Junior
    2013
    10 31/07/2015 11:48
    Salve a tutti.

    Non ho nessuna dimestichezza con excel e con le macro. Devo cancellare le righe che contengono un determinato valore (alfabetico).

    Il foglio contiene 42.000 righe per 9 colonne.
    Da questo foglio devo cancellare tutte le righe che contengono la parola "jingle" "promo"
    "spot" ecc.

    Ho cercato nei vari forum ma non ho trovato niente che faccia al mio caso.
    Mi potete aiutare?

    elx, Excel 2013
  • OFFLINE
    alfrimpa
    Post: 854
    Registrato il: 21/06/2013
    Città: NAPOLI
    Età: 70
    Utente Senior
    Excel 365
    00 31/07/2015 13:06
    Ciao

    Potresti provare con questa macro

    Sub cancella()
    Dim miorange as range
    Dim cel as range
    Set miorange = Range("a1:i42000")
    For Each cel in miorange
          If cel.Value = "jingle" Or cel.Value = "promo" Or cel.Value = "spot" Then
                Cel.EntireRow.ClearContents
          End If
    Next cel
    End Sub 


    Ho supposto che il range sia a1:i42000 e che tu debba cancellare il contenuto della riga.

    Io sono senza pc e non ho potuto testarla per verificare se ci sono o meno malfunzionamenti.

    Provala prima su una copia di backup del file originale.

    P.S. Presumo che la macro sarà un po' lenta dato l'alto mumero di celle da valutare.
    [Modificato da alfrimpa 31/07/2015 13:34]

    Alfredo
  • OFFLINE
    raffaele1953
    Post: 2.651
    Registrato il: 28/06/2011
    Città: AGORDO
    Età: 70
    Utente Veteran
    2013
    00 31/07/2015 13:36
    >>>che contengono la parola "jingle" "promo" "spot" ecc.
    Già "quel ecc" mi dice che ci sono altre voci...

    Domanda, mà uno di quei nomi sono all'interno di una cella unica, oppure ci sono altre parole insieme?
    Ex A1 = "promo alter", forse "promo" è scritta da sola e senza spazi finali?
    Excel 2013
  • OFFLINE
    alfrimpa
    Post: 855
    Registrato il: 21/06/2013
    Città: NAPOLI
    Età: 70
    Utente Senior
    Excel 365
    00 31/07/2015 13:40
    Io ho presunto che fossero singole voci.....

    Alfredo
  • OFFLINE
    elxelx
    Post: 1
    Registrato il: 29/07/2015
    Città: MILANO
    Età: 35
    Utente Junior
    2013
    00 31/07/2015 15:44
    espongo meglio
    Espongo nel dettaglio la mia operazione.
    Ho importato su excel un file csv. Ho chiesto di separare i valori usando come parametro la virgola. Ho quindi un foglio di lavoro con 9 colonne e 45238 righe (le prime 7 le ho nascoste perché non mi servono)In sostanza e' il report delle tracce che sono passate per il mio programma SAM

    Nelle colonne compaiono
    A N° B Date played C Artist D Title E Album F Year G Durat. H Type I Listeners


    Le righe che devo cancellare sono quelle che contengono nella cella almeno uno dei valori dati e che possono stare sulle colonne "C o D". i valori sono parole singole tipo "jingle" oppure formate da più parole (che rimangono ovviamente nella stessa cella) esempio
    "ma che canti se non capisci" oppure formate da parole e numeri esempio "spot 2011".

    Ho fatto una prova con quanto mi suggerivate ma mi ha dato freccia gialla su "sub cancella"

    Che faccio? Sono stato chiaro?
    Grazie mille

    Elx, excel 2013

  • OFFLINE
    alfrimpa
    Post: 856
    Registrato il: 21/06/2013
    Città: NAPOLI
    Età: 70
    Utente Senior
    Excel 365
    00 31/07/2015 16:08
    Ciao

    Come spesso accade la situazione è ben più complessa di quanto non appariva dall'illustrazione del primo post.

    Personalmente non ho capito quali sono i criteri secondo i quali le righe debbano essere cancellate/eliminate.

    A questo punto ti consiglierei di allegare il tuo file di esempio (bastano poche decine di record) in cui mostri la tua situazione di partenza, i criteri di cancellazione/eliminazione delle righe e il risultato finale che vuoi ottenere.

    Forse così si riuscirà a darti una mano.

    Alfredo
  • OFFLINE
    elxelx
    Post: 2
    Registrato il: 29/07/2015
    Città: MILANO
    Età: 35
    Utente Junior
    2013
    00 31/07/2015 16:08
    Errata Corrige
    Devo eliminare le righe non cancellare. è diverso vero?

    Saluti grazie ancora

    elx
  • OFFLINE
    alfrimpa
    Post: 857
    Registrato il: 21/06/2013
    Città: NAPOLI
    Età: 70
    Utente Senior
    Excel 365
    00 31/07/2015 16:24
    Si è diverso.

    Io avevo parlato di cancellazione/eliminazione perchè non avevo capito tu cosa intendessi fare.

    L'importante è che tu individui tutti (e dico tutti) i criteri di eliminazione delle righe.

    Alfredo
  • OFFLINE
    elxelx
    Post: 3
    Registrato il: 29/07/2015
    Città: MILANO
    Età: 35
    Utente Junior
    2013
    00 31/07/2015 16:39
    Esempio Report_prova_forum
    Come si vede dall'esempio che ho caricato, ci sono alcune righe evidenziate in rosso.
    Queste sono il tipo di righe che si ripetono in modo sparso per il foglio e che devono essere eliminate.

    Grazie
  • OFFLINE
    alfrimpa
    Post: 858
    Registrato il: 21/06/2013
    Città: NAPOLI
    Età: 70
    Utente Senior
    Excel 365
    00 31/07/2015 16:46
    Ma il colore rosso al testo lo hai applicato tu nell'esempio o ce l'hai già nel file di partenza?

    Nel primo caso in base a quali criteri lo hai fatto?

    Ripeto l'importante è che si individuino i criteri.

    Alfredo
  • OFFLINE
    raffaele1953
    Post: 2.652
    Registrato il: 28/06/2011
    Città: AGORDO
    Età: 70
    Utente Veteran
    2013
    00 31/07/2015 17:04
    Mi sembra che quelle righe che vuoi cancellare non abbiano nulla in colonna E

    Prova su una copia a vedere se va bene
    Selezioni le 9 colonne e "Ordina" per la colonna E
    Elimina le colonne in basso e dopo "Ordina" per la colonna A
    Excel 2013
  • OFFLINE
    alfrimpa
    Post: 859
    Registrato il: 21/06/2013
    Città: NAPOLI
    Età: 70
    Utente Senior
    Excel 365
    00 31/07/2015 17:12
    Io sto rispondendo da cell e non posso vedere il foglio di lavoro nella sua interezza.

    Alfredo
  • OFFLINE
    elxelx
    Post: 4
    Registrato il: 29/07/2015
    Città: MILANO
    Età: 35
    Utente Junior
    2013
    00 03/08/2015 15:49
    Ciao
    Ho bisogno di eliminare tutte le righe di un foglio di lavoro excel che contengono i seguenti valori (dopo la firma). Chi mi aiuta a fare una macro. Carico il file excel e ringrazio

    Elx Excel 2013


    CoolTour
    CoolTOur cinese
    Le interviste di 110 - Finding Ada Day
    Take one @Eugenio in Via Di Gioia
    Ti Amo Campionato
    L'uovo di Colombo
    Spegnete quel Grammofono
    OFFicina3
    Pure Morning
    Il Toro del Mattino
    marcolinashow
    to
    ._historytracks_thewho_babaoriley
    ??????
    Pillole di Statuto
    110 on Air
    Albano per Radio 110
    Arisa per Radio 110
    Bertallot per Radio 110
    Diretta
    110 Segnale Orario
    %Artist%
    121016_sceltanewbeat_damonalbarn
    121016_sceltanewbeat_edwardsharpe
    121016_sceltanewbeat_lukeroberts
    121016_sceltanewbeat_segallfence
    Jingle
    Atlante delle Professioni
    Spot 2011
    Spot NightBuster2
    History Tracks
    Spot Infopoint
    La Slot Machine di UNITO
    Ma che canti se non capisci
    Radio 110
    Radio110
    RADIO 110
    RADIO 110 INTERNATIONAL
    Scelta New Beat
    MiTo Settembremusica
    Svicol
    historytracks_dookie_basketcase
    historytracks_dookie_longview
    historytracks_dookie_she
    historytracks_dookie_welcometoparadise
    historytracks_dookie_whenicomearound
    historytracks_harvest_alabama
    historytracks_harvest_amanneedsamaid
    historytracks_harvest_areyoureadyforthecountry
    historytracks_harvest_harvest
    historytracks_harvest_heartofgold
    historytracks_harvest_oldman
    historytracks_harvest_outontheweekend
    http://onair20.xdevel.com:8090
    gi_18
    lu_09
    ma_18
    ve_18
  • OFFLINE
    raffaele1953
    Post: 2.670
    Registrato il: 28/06/2011
    Città: AGORDO
    Età: 70
    Utente Veteran
    2013
    00 03/08/2015 23:19
    Sperando che non ci siano errori d'utenza.
    Da 46341 portarli a 30548 (con 56 opzioni opzioni differenti?)

    Comunque copia i valori (dopo la firma) in foglio2 cella A1
    Elimina (sposta in alto le celle sotto) del record A12=To (troppi titoli gli assomigliano)
    Elimina (sposta in alto le celle sotto) del record A14=?????? (sono caratteri speciali)
    Nb: questi due non li posso elaborare.

    Con questo codice "Brutto" l'ho inserisci in un modulo e lo avvii.
    Dato che ci mette tanto tempo, ogni tanto appare in MsgBox che ti avvisa che ha fatto 5 righe "premi OK", devi arrivare in foglio2 = 55, ci vuole 29/30 minuti. Quando arriva a MsgBox=Fatto è finito.
    NB: in caso d'errori farlo ripartire è più veloce.

    Sub cancella()
    Dim Ur As Long, Ur2 As Long, X As Long, Y As Long, R As Long, Riga As Object, Area As Range
    Dim Trovati As Long, Rg As Long, Nome As String
    Ur1 = Sheets("Foglio1").Range("B" & Rows.Count).End(xlUp).Row
    Ur2 = Sheets("Foglio2").Range("A" & Rows.Count).End(xlUp).Row
    For Y = 1 To Ur2
    Nome = "*" & Sheets("Foglio2").Cells(Y, 1) & "*"
    Rg = 1
    Set Area = Sheets("Foglio1").Range("A" & Rg & ":E" & Ur1)
    Trovati = Application.WorksheetFunction.CountIf(Area, "*" & Sheets("Foglio2").Cells(Y, 1) & "*")
            For X = 1 To Trovati
                Set Area = Sheets("Foglio1").Range("A" & Rg & ":E" & Ur1)
                Set Riga = Area.Find(Nome, LookIn:=xlValues, LookAt:=xlWhole)
                If Not Riga Is Nothing Then
                    R = Riga.Row
                    Sheets("Foglio1").Rows(R & ":" & R).Delete
                    Rg = R - 1
                End If
            Next X
            If Y Mod 5 = 0 Then MsgBox Y
          Next Y
    MsgBox "fatto"
    End Sub
    Excel 2013
  • OFFLINE
    elxelx
    Post: 5
    Registrato il: 29/07/2015
    Città: MILANO
    Età: 35
    Utente Junior
    2013
    00 04/08/2015 10:56
    errore di runtime 1004
    Ciao Raffaele1953
    grazie per l'aiuto ma credo ci sia qualcosa che non va.
    Mi da questo errore:

    errore di runtime 1004
    Impossibile trovare la proprietà di countif per la classe WorksheetFunction

    :(

    elxelx
  • OFFLINE
    raffaele1953
    Post: 2.671
    Registrato il: 28/06/2011
    Città: AGORDO
    Età: 70
    Utente Veteran
    2013
    00 04/08/2015 12:00
    da provare


    .....
    Ai proprietari del forum, adesso allega file oltre il mega?
    [Modificato da raffaele1953 04/08/2015 12:44]
    Excel 2013
  • OFFLINE
    alfrimpa
    Post: 864
    Registrato il: 21/06/2013
    Città: NAPOLI
    Età: 70
    Utente Senior
    Excel 365
    00 04/08/2015 12:16
    Buona giornata Elxelx ed un caro saluto a Raffaele.

    Mi permetto di proporre una soluzione (spero corretta) al tuo quesito che non prevede l'uso del VBA ma solo di semplici funzioni di Excel (CONFRONTA() e O()) oltre al filtro avanzato del menù Dati (nel presupposto che i dati da ricercare siano nelle colonne C e D).

    1) Sul tuo foglio1 elimina le righe in alto che non ti servono.
    2) Copia sul foglio2 in A1 tutte le voci di cui al tuo post del 3/8
    3) In colonna J inserisci la seguente formula e la ricopi fin dove serve:

    =SE.ERRORE(CONFRONTA(C5;Foglio2!$A$1:$A$58;0);"")


    4) In colonna K inserisci la seguente formula e la ricopi fin dove serve

    =SE.ERRORE(CONFRONTA(D5;Foglio2!$A$1:$A$58;0);"")


    5) In colonna L inserisci la seguente formula e la ricopi fin dove serve:

    =O(J5<>"";K5<>"")


    6) In A1:A2 inserisci i criteri di selezione per l'estrazione dei dati (z e FALSO)

    7) Posizionati sull'intestazione del database e clicca su Dati e poi su Filtro Avanzato

    8) Nella finestra nella casella Criteri digita A1:A2, spunta "Copia in un'altra posizione" ed i "Copia In" digita un indirizzo di cella e dai Ok.

    Spero di essere stato chiaro (il file non lo prende perché troppo grande).

    P.S. Come intestazione delle colonne J, K e L metti x, y e z
    [Modificato da alfrimpa 04/08/2015 12:22]

    Alfredo
  • OFFLINE
    elxelx
    Post: 7
    Registrato il: 29/07/2015
    Città: MILANO
    Età: 35
    Utente Junior
    2013
    00 04/08/2015 16:08
    Buongiorno alfrimpa.

    Ti ringrazio per il consiglio ma ho già risolto con la macro di Raffaele1953 che ringrazio sentitamente in questo messaggio.

    A presto

    elxelx
  • 15MediaObject5,00118 1