| | Post: 1 | Registrato il: 29/07/2015
| Città: MILANO | Età: 35 | Utente Junior | 2013 | | OFFLINE | |
|
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 |
|
| | Post: 854 | Registrato il: 21/06/2013
| Città: NAPOLI | Età: 70 | Utente Senior | Excel 365 | | OFFLINE |
|
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 |
| | Post: 2.651 | Registrato il: 28/06/2011
| Città: AGORDO | Età: 70 | Utente Veteran | 2013 | | OFFLINE | |
|
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 |
| | Post: 855 | Registrato il: 21/06/2013
| Città: NAPOLI | Età: 70 | Utente Senior | Excel 365 | | OFFLINE |
|
31/07/2015 13:40 | |
Io ho presunto che fossero singole voci.....
Alfredo |
| | Post: 1 | Registrato il: 29/07/2015
| Città: MILANO | Età: 35 | Utente Junior | 2013 | | OFFLINE | |
|
31/07/2015 15:44 | |
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
|
| | Post: 856 | Registrato il: 21/06/2013
| Città: NAPOLI | Età: 70 | Utente Senior | Excel 365 | | OFFLINE |
|
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 |
| | Post: 2 | Registrato il: 29/07/2015
| Città: MILANO | Età: 35 | Utente Junior | 2013 | | OFFLINE | |
|
31/07/2015 16:08 | |
Devo eliminare le righe non cancellare. è diverso vero?
Saluti grazie ancora
elx |
| | Post: 857 | Registrato il: 21/06/2013
| Città: NAPOLI | Età: 70 | Utente Senior | Excel 365 | | OFFLINE |
|
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 |
| | Post: 3 | Registrato il: 29/07/2015
| Città: MILANO | Età: 35 | Utente Junior | 2013 | | OFFLINE | |
|
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
|
| | Post: 858 | Registrato il: 21/06/2013
| Città: NAPOLI | Età: 70 | Utente Senior | Excel 365 | | OFFLINE |
|
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 |
| | Post: 2.652 | Registrato il: 28/06/2011
| Città: AGORDO | Età: 70 | Utente Veteran | 2013 | | OFFLINE | |
|
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 |
| | Post: 859 | Registrato il: 21/06/2013
| Città: NAPOLI | Età: 70 | Utente Senior | Excel 365 | | OFFLINE |
|
31/07/2015 17:12 | |
Io sto rispondendo da cell e non posso vedere il foglio di lavoro nella sua interezza.
Alfredo |
| | Post: 4 | Registrato il: 29/07/2015
| Città: MILANO | Età: 35 | Utente Junior | 2013 | | OFFLINE | |
|
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 |
| | Post: 2.670 | Registrato il: 28/06/2011
| Città: AGORDO | Età: 70 | Utente Veteran | 2013 | | OFFLINE | |
|
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 |
| | Post: 5 | Registrato il: 29/07/2015
| Città: MILANO | Età: 35 | Utente Junior | 2013 | | OFFLINE | |
|
04/08/2015 10:56 | |
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 |
| | Post: 2.671 | Registrato il: 28/06/2011
| Città: AGORDO | Età: 70 | Utente Veteran | 2013 | | OFFLINE | |
|
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 |
| | Post: 864 | Registrato il: 21/06/2013
| Città: NAPOLI | Età: 70 | Utente Senior | Excel 365 | | OFFLINE |
|
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:
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 |
| | Post: 7 | Registrato il: 29/07/2015
| Città: MILANO | Età: 35 | Utente Junior | 2013 | | OFFLINE | |
|
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 |
|
|