Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Excel - macro elimina righe in base a criterio

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Excel - macro elimina righe in base a criterio

Postdi pablopaz » 12/02/13 16:46

Ciao a tutti,
ho provato a cercare un po' sul forum un post che potesse adattarsi alla mia esigenza, ma non l'ho trovato.
Premetto che ho un discreto livello di excel, non conosco molto la parte VBA ma mi adatto :)
La mia necessità è la seguente:

Da un gestionale aziendale vengono esterapolati giornalmente una serie di dati (parecchi), sono le spedizioni in corso nel mese.
Ogni spedizione è identificata da un numero di spedizione (campo univoco).
ad un certo punto c'è il campo "Data Consegna" che in alcuni casi è popolato, in altri casi è vuoto.
se ad esempio prendo come riferimento la spedizione "001", alla prima estrazione il mio file excel presenterà soltanto 1 riga per ogni spedizione.
In questo file excel il mio compito è verificare il campo "Data Consegna" nel caso questo campo sia vuoto, perchè merce ancora non consegnata, oppure la merce è effettivamente stata consegnata ma il gestionale non è stato aggiornato.
diciamo che la mia spedizione "001" viene estrapolata dal gestionale per 10gg. consegutivi, generandomi nel mio file (calderone) 10 righe identiche dove il campo "Data Consegna" è sempre vuoto.
Poi io manualmente da excel ad un certo punto compilo il campo "data Consegna" perchè effettivamente la spedizione è stata consegnata; visto che ho 10 righe, filtro per spedizione e aggiorno il campo "data consegna" per tutte le 10 righe; e fin qui tutto bene.

Il problema sta però nel fatto che alla prossima estrazione dati dal gestionale (che ripeto non sempre si aggiorna in tempo reale), la mia spedizione "001" verra importata sempre con il campo "Data Consegna" VUOTO e questo non è corretto in quanto per me ormai quella spedizione è consegnata.

siccome le spedizioni sono moltissime ed è impossibile filtrare per tutte le "n" spedizioni ed andare ad aggiornare i dati, avrei bisogno di una macro che mi ripulisca un po i dati in questo modo:
- faccia una ricerca su tutto il foglio;
- filtri per spedizione
- verifichi il campo "Data consegna" e se in questo campo trova almeno una volta la data (campo compilato), mi elimini tutte le 9 righe in eccesso dove il campo "Data Consegna" = vuoto

il risultato finale dovrebbe essere avere un file dove "Ripulendo i dati" io possa avere solamente 1 riga per ogni spedizione, dove il campo "Data Consegna" sia presente solamente se io effettivamente l'ho compilato.

Non so se sia una cosa fattibile perchè non mi intendo molto di macro e VBA ma grazie a coloro che vorranno aiutarmi.
Spero di essermi spiegato correttamente.
Grazie e complimenti per il forum.
pablopaz
Newbie
 
Post: 8
Iscritto il: 08/10/12 14:25

Sponsor
 

Re: Excel - macro elimina righe in base a criterio

Postdi Flash30005 » 12/02/13 22:09

Questa semplice macro elimina i duplicati
Codice: Seleziona tutto
Sub EliminaDuplicati()
        URF = Range("A" & Rows.Count).End(xlUp).Row
        For RR1 = 1 To URF - 1
        For RR2 = URF To RR1 + 1 Step -1
            If Range("A" & RR1).Value = Range("A" & RR2).Value And Range("B" & RR2).Value = "" Then
                Rows(RR2).Delete
            End If
            Next RR2
        Next RR1
End Sub


Controlla se in colonna A trova uno stesso codice e se in colonna B trova la cella vuota cancella la riga
lasciando così una sola riga spedizione
adatta le colonne alla tua esigenza
ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Excel - macro elimina righe in base a criterio

Postdi Anthony47 » 12/02/13 22:25

Guarda la macro proposta da Flash, sopra.

Pero' secondo me tu devi farti un file che chiamerai SpedizioniLog.xls, con in Col A il numero di spedizione e in Col B la data di consegna, e lo popolerai con i nuovi numeri di spedizione e con le date di consegna "quando la consegna avviene".
Poi supponiamo che numero di spedizione e data di consegna, nel file che ricevi dal gestionale, sia in Colonna A e Colonna B; inserisci in una colonna libera, es partendo da M2, la formula
Codice: Seleziona tutto
=Se(B2=""; CERCA.VERT(A2;[SpedizioniLog.xls]Foglio1!$A:$B;2;0)
Copia poi M2 verso il basso.

In questo modo le righe che non hanno ancora una consegna effettuata sono identificate da #N/D in colonna M; quelle che hanno una consegna gia' effettuata ma non ancora recepita dal gestionale avranno la colonna M compilata dalla formula.
Aggiornerai il gestionale con le nuove consegne; controlli che non ci siano spedizioni troppo vecchie non ancora consegnate e infine controlli che in colonna M non ci siano consegne troppo vecchie gia' eseguite ma non ancora recepite.

E' una possibile alternativa?

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Excel - macro elimina righe in base a criterio

Postdi pablopaz » 13/02/13 09:22

ciao e innanzi tutto grazie per la pronta risposta.
ho provato la soluzione proposta da Flash, funziona abbastanza bene per la mia esigenza.
cioè:

nel caso in cui trova "n" spedizioni con il campo data consegna = vuoto mi cancella tutte le "n" righe tranne 1, quindi il risultato è ottimo in termini di pulizia file.

nel caso invece in cui trova "n" spedizioni con il campo data consegna = vuoto, ma tra queste c'è una spedizione con il campo data consegna popolato (da me utente), la macro ripulisce i dati, però mi lascia 2 righe per la stessa spedizione, una con il campo data consegna compilato, l'altra con il campo data consegna vuoto.

ora provo a fare altri test per vedere se risolvo, inoltre valuto anche la soluzione di Anthony se può fare al caso mio.

grazie mille, vi aggiorno.

ciao
pablopaz
Newbie
 
Post: 8
Iscritto il: 08/10/12 14:25

Re: Excel - macro elimina righe in base a criterio

Postdi Flash30005 » 13/02/13 09:34

Quella situazione la puoi avere se la prima riga che viene processata ha il campo data vuoto e la seconda riga (di confronto) è pieno (con data)
per evitare questo è possibile modificare la macro in questa maniera
Codice: Seleziona tutto
Sub EliminaDuplicati2()
        URF = Range("A" & Rows.Count).End(xlUp).Row
        For RR1 = 1 To URF - 1
        For RR2 = URF To RR1 + 1 Step -1
            If Range("A" & RR1).Value = Range("A" & RR2).Value Then
                If Range("B" & RR2).Value = "" Then
                    Rows(RR2).Delete
                Else
                     If Range("B" & RR1).Value = "" And Range("B" & RR2).Value <> "" Then
                          Rows(RR1).Delete
                          RR1 = RR1 - 1
                        GoTo SaltaRR1
                    End If
                End If
            End If
            Next RR2
SaltaRR1:
        Next RR1
End Sub


Fai sapere

Ciao

EDIT ore 9:40 - Modificata macro
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Excel - macro elimina righe in base a criterio

Postdi pablopaz » 13/02/13 09:40

Anche la soluzione proposta da Antony mi serve e ti ringrazio, può essere molto utile avere un file di appoggio dove posso tenere sotto controllo le consegne visto che il mio file excel e il gestionale non comunicano...

però come ho specificato nel precedente post, sto cercando di modicficare la macro di Flash in modo da risolvere il problema che alla pulizia dei dati il sistema mi lascia 2 righe, una con il campo data consegna compilato e l'altra con il campo vuoto.
io ho bisogno che in quel caso il sistema cancelli tutte le righe tranne quella con il campo popolato...

grazie per il vostro aiuto.

ciao
pablopaz
Newbie
 
Post: 8
Iscritto il: 08/10/12 14:25

Re: Excel - macro elimina righe in base a criterio

Postdi Flash30005 » 13/02/13 09:43

Ci siamo accavallati con i post
prova l'ultima macro delle ore 9:34 modificata alla 9:40
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Excel - macro elimina righe in base a criterio

Postdi pablopaz » 13/02/13 09:50

ciao Flash, funzionaaaaa!!!!
grazie mille, sei un grande.

ora cerco di ottimizzare a secondo delle mie esigenze, visto che questo è uno dei primi problemi che ho incontrato, devo verificare altre "funzioni" che dovrà avere il mio file e nel caso avessi delle difficoltà vi domando...
grazie a entrambi!

ciao
pablopaz
Newbie
 
Post: 8
Iscritto il: 08/10/12 14:25


Torna a Applicazioni Office Windows


Topic correlati a "Excel - macro elimina righe in base a criterio":


Chi c’è in linea

Visitano il forum: Nessuno e 13 ospiti