Condividi:        

[Excel] rimuovere righe con condizione

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] rimuovere righe con condizione

Postdi matrix776 » 14/05/11 14:06

Salve ragazzi
questo è il mio primo post e ne approfitto per salutare tutti!

Ho un problema con un vecchio db che ho importato in excel.
Praticamente è un elenco clienti con i loro acquisti. Nell'importazione si sono generete 30.000 righe con valori unicamente inseriti in colonna a.
La tabella è così composta (ovviamente i valori sono esemplificativi)
a1: cliente (questo campo distingue l'inizio del record cliente ed è una voce univoca)
a2: nome
a3: cognome
a4: armadio
a5: comodino
a6: cliente (sempre inizio record)
a7: nome
a8: cognome
a9: scrivania
a10: cliente
....

ora il problema :D devo riuscire ad eliminare i clienti (quindi tra una voce "cliente" e la successiva) che non abbiano tra i campi d'acquisto determinati valori come potrebbe essere la voce "comodino" in questo caso.
Avevo pensato a dei cicli for intersecati con varie condizioni ma le mie conoscenze non permettono di fare gran che :cry:
consigli?
matrix776
Newbie
 
Post: 6
Iscritto il: 14/05/11 13:07

Sponsor
 

Re: [Excel] rimuovere righe con condizione

Postdi ricky53 » 14/05/11 15:21

Caio,
prima di tutto benvenuto nel nostroforum.

Veniamo al tuo quesito: non mi è chiaro
devo riuscire ad eliminare i clienti (quindi tra una voce "cliente" e la successiva) che non abbiano tra i campi d'acquisto determinati valori come potrebbe essere la voce "comodino" in questo caso.

Puoi chiarire bene. E' possibile avere un esempio dei dati reali (attenzione ai dati riservati).

Come hai fatto l'import dei dati?
il file di origine che formato ha ?
Magari si risolve il problema quando fai l'import.

Inoltre:
a. come identifichi che stiamo sulla riga "cilente"?
b. esiste sempre la sequenza riga cliente, riga nome, riga cognome ?
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: [Excel] rimuovere righe con condizione

Postdi matrix776 » 14/05/11 15:41

grazie per il benvenuto ;)

per l'import non posso modificarlo....figurati che era un pdf convertito in word e poi copiato in excel :(
la sequenza è sempre uguale, varia solo il numero di righe dopo il cognome in base alla merce che hanno acquistato.

a1: cliente
a2: mario
a3: rossi
a4: merce
a5: merce
a6: merce
a7: cliente
ecc

tra l'indicazione cliente in a1 (univoca ovvero contiene proprio la stringa "cliente" nella colonna A di quella riga) e il successivo "cliente" in a7 dovrei fare un check dei valori inseriti (che sono diversi tra loro) e se non c'è quello che mi interessa dovrei cancellare tutte le righe da a1 ad a6 e passare al successivo.
matrix776
Newbie
 
Post: 6
Iscritto il: 14/05/11 13:07

Re: [Excel] rimuovere righe con condizione

Postdi ricky53 » 14/05/11 16:16

Ciao,
buona cosa la presenza della stringa "cliente".

Adesso occorre sapere quali sono le condizioni per il "check". Ossia quali stringhe delle righe "merce" occorre prendere in considerazione per cancellare /mantenere le righe di quel cliente ?
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: [Excel] rimuovere righe con condizione

Postdi matrix776 » 14/05/11 16:21

ricky sei gentilissimo ;)
il check lo modificherei di volta in volta....per ora, riprendendo l'esempio nel primo post, mi basti che contenga la voce "comodino" tra tutte quelle della merce per conservare l'intero cliente....
matrix776
Newbie
 
Post: 6
Iscritto il: 14/05/11 13:07

Re: [Excel] rimuovere righe con condizione

Postdi ricky53 » 14/05/11 16:30

Ciao,
allora conviene con "InputBox" chiedere, ad ogni esecuzione della macro, la parola che ti interessa.

Adesso la conferma: se la parola viene trovata si devono lasciare tutte le righe di quel cliente ?
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: [Excel] rimuovere righe con condizione

Postdi matrix776 » 14/05/11 16:36

sisi, se viene trovata la parola voglio conservare tutte le righe del cliente....anche per poter fare una statistica degli acquisti effettuati insieme a quella data merce
matrix776
Newbie
 
Post: 6
Iscritto il: 14/05/11 13:07

Re: [Excel] rimuovere righe con condizione

Postdi ricky53 » 14/05/11 23:05

Ciao,
non sarebbe meglio riorganizzare i dati visto che li stiamo elaborando ???

Io propongo di portare su più colonne quello che adesso (per lo stesso cliente) sta su più righe ??

Dopo sarà molto, ma molto più facile fare elaborazioni statistiche !!!

Io farei in questo modo:

codice cliente - cognome - nome. - merce - altri campi
A001.......... - rossini... - mario - sedie.. - ............
A001.......... - rossini... - mario - tavoli. - ............
A002.......... - versini... - carlo. - panca. - ............
A002.......... - versini... - carlo. - lamp.. - ............
A002.......... - versini... - carlo. - poltr.. - ............
A003.......... - zurlini.... - luca.. - lucer.. - ............
. . .
. . .
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: [Excel] rimuovere righe con condizione

Postdi matrix776 » 15/05/11 19:08

ciao ricky.....risolto!!
ieri stavo impazzendo; poi ho realizzato che conveniva mettere tutto il campo "cliente" su una riga per poterlo elaborare più facilmente. (solo dopo ho letto il tuo consiglio :) )
copio la macro che ho creato così magari può essere utile a qualcuno che si ritroverà con il mio stesso problema.
Avevo premesso che non ho grandi competenze con vba quindi abbiate pietà nei giudizi sulla compilazione :D

Sub righeggia()
ir = 1
it = 1
im = 1
For x = 1 To 30000
If Cells(ir, 1) = "Cliente" Then
If it = 1 Then it = it - 1
For t = 1 To 20
im = im + 1
it = it + 1
Cells(ir, im) = Cells(it, 1)
If Cells(it + 1, 1) = "Cliente" Then GoTo fine
Next t
fine:
im = 1
End If
ir = ir + 1
Next x
End Sub

poi ho copiato dalla colonna b i risultati su un nuovo foglio, ho cancellato le righe vuote che si sono create ed infine una semplicissima macro che controlla se nella riga c'è la stringa interessata altrimenti la cancella.
matrix776
Newbie
 
Post: 6
Iscritto il: 14/05/11 13:07

Re: [Excel] rimuovere righe con condizione

Postdi ricky53 » 15/05/11 23:45

Ciao,
è una bella soddisfazione risolvere da soli.

Si ci sono delle cosette da rivedere: la scrittura va fatta subito in un altro foglio, non devono esserci righe vuote, il ciclo con 20000 va cambiato mettendo il numero di righe effettive, le variabili vanno definite prima di essere utilizzate e ...
basta altrimenti la tua soddisfazione svanisce e questo non lo voglio proprio !!!

Ho fatto questi aggiustamenti al tuo codice:
Codice: Seleziona tutto
Option Compare Text
Option Explicit

Sub Righeggia_New()
    Dim ir As Long, it As Long, im As Long, t As Long, x As Long, K As Long
    Dim Ur As Long
    ir = 1
    it = 1
    K = 0
    Ur = Sheets("Foglio1").Range("A" & Rows.Count).End(xlUp).Row
    For x = 1 To Ur
        im = 0
        If Sheets("Foglio1").Cells(ir, 1) = "Cliente" Then
            If it = 1 Then it = it - 1
            K = K + 1
            For t = 1 To 20
                im = im + 1
                it = it + 1
                Sheets("Foglio2").Cells(K, im) = Sheets("Foglio1").Cells(it, 1)
                If Sheets("Foglio1").Cells(it + 1, 1) = "Cliente" Then
                    Exit For
                End If
            Next t
        End If
        ir = ir + 1
    Next x
End Sub


Buon proseguimento e ... alla prossima
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: [Excel] rimuovere righe con condizione

Postdi matrix776 » 16/05/11 16:11

tranquillo....la soddisfazione è unicamente legata al risultato!!

grazie per i miglioramenti, terrò ben stretta questa macro. anche perchè mi ha risparmiato un lavoro immane!!

ciao e alla prox
matrix776
Newbie
 
Post: 6
Iscritto il: 14/05/11 13:07

Re: [Excel] rimuovere righe con condizione

Postdi ricky53 » 16/05/11 16:33

Ciao,
c'è qualche altro passo che può essere automatizzato ?

Invia la descrizione e ci si prova a scrivere il codice.
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia


Torna a Applicazioni Office Windows


Topic correlati a "[Excel] rimuovere righe con condizione":


Chi c’è in linea

Visitano il forum: Nessuno e 36 ospiti