Condividi:        

Identificare record ripetuti

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

Re: Identificare record ripetuti

Postdi Anthony47 » 19/04/09 22:53

L' ultimo file lo apro ok, quello prima no (come avevi scritto tu): mi dici per favore che cosa c' e' di diverso tra i due file? (come sono stati generati, come caricati, qualsiasi cosa che mi consenta di capire di piu' su questo fenomeno d file corrotti)

Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19181
Iscritto il: 21/03/06 16:03
Località: Ivrea

Sponsor
 

Re: Identificare record ripetuti

Postdi ricky53 » 19/04/09 23:00

Ciao Anthony,
se ti riferisci al file "esempio pratico.zip", lo scarico ma in apertura mi da errore.

Ho un errore, di tipo diverso, anche su file "esempio pratico.rar".

Ciao da Ricky53
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: Identificare record ripetuti

Postdi Anthony47 » 19/04/09 23:06

Cioa Ricky, i file sono come dici: .rar e' corrotto, ma .zip io lo apro e lo eseguo; uso ZipGenius6 (che apre normalmente anche i .rar).

Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19181
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Identificare record ripetuti

Postdi Statix » 19/04/09 23:11

Cia a Tutti allego il file di Lucio,
la macro dovrebbe eliminare i doppioni,ma se in Range A cambia il numero si deve fermare e ricominciare da quel punto,ho provato a modificare la macro come nel post dell'altro post (doppione) :)
Allegati

[L’estensione zip è stata disattivata e non puó essere visualizzata.]

Statix
Windows 10,
Office 2013,
Statix
Utente Senior
 
Post: 1287
Iscritto il: 12/05/06 21:55
Località: Provincia di Caserta

Re: Identificare record ripetuti

Postdi ricky53 » 19/04/09 23:16

Ciao,
per informazione: non apro i due file in nessun modo usando winzip, winrar e 7-zip.

Ciao da Ricky53
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: Identificare record ripetuti

Postdi Statix » 19/04/09 23:20

Statix
Windows 10,
Office 2013,
Statix
Utente Senior
 
Post: 1287
Iscritto il: 12/05/06 21:55
Località: Provincia di Caserta

Re: Identificare record ripetuti

Postdi Statix » 19/04/09 23:22

Comunque ho provato a scaricare il file ed è tutto ok,si vede che è un tuo problema.
Per Anthony la macro modificata mi da errore manca while
Statix
Windows 10,
Office 2013,
Statix
Utente Senior
 
Post: 1287
Iscritto il: 12/05/06 21:55
Località: Provincia di Caserta

Re: Identificare record ripetuti

Postdi ricky53 » 19/04/09 23:24

Ciao Lucio
nella macro manca un end if

....
While I <= UR
If OldN <> Cells(I, 1) Then '<<< Aggiunta
Ruote = 9: I = I - 1: GoTo NewN '<<< Aggiunta
End If
Select Case Cells(I, 2)
.....

Ciao da Ricky53
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: Identificare record ripetuti

Postdi Anthony47 » 19/04/09 23:28

Gulp...
Inizialmente era tutto su una riga:
If OldN <> Cells(I, 1) Then Ruote = 9: I = I - 1: GoTo NewN '<<< Aggiunta
poi all' invio ho spezzato e l' End If e' finito in cavalleria :oops:

Ciao!
Avatar utente
Anthony47
Moderatore
 
Post: 19181
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Identificare record ripetuti

Postdi ricky53 » 19/04/09 23:30

Ciao,
Errore veniale ....
ciao ciao
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: Identificare record ripetuti

Postdi Statix » 19/04/09 23:33

Corretto la macro funziona,c'è solo il problema che se cambia il numero nella colonna A la macro non si ferma ,
come detto in precedenza Lucio lui vuole che a quel punto si fermi e ricomincia da quel punto .
Statix
Windows 10,
Office 2013,
Statix
Utente Senior
 
Post: 1287
Iscritto il: 12/05/06 21:55
Località: Provincia di Caserta

Re: Identificare record ripetuti

Postdi Anthony47 » 19/04/09 23:44

Io l' ho capita che si deve fermare la ricerca del 9° estratto, lasciando ad esempio un gruppo di 7 ruote estratte con quel numero; poi si ricomincia a ricalcolare a blocchi di 9.

Se non e' cosi'... non vale.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19181
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Identificare record ripetuti

Postdi Statix » 19/04/09 23:53

Ciao Anthony
la ricerca incomincia sempre a blocchi di 9 ma di ruote,
cioè partendo dalla prima ,fino a che non cambia il numero in A,li la macro si deve fermare e ricominciare sempre a blocchi di 9 fino al successivo cambio di numeri.
Statix
Windows 10,
Office 2013,
Statix
Utente Senior
 
Post: 1287
Iscritto il: 12/05/06 21:55
Località: Provincia di Caserta

Re: Identificare record ripetuti

Postdi Anthony47 » 20/04/09 00:28

Forse ho capito...
Questa "aggiunta" l' ho modificata:
Codice: Seleziona tutto
If OldN <> Cells(I, 1) And OldN <> "" Then '<<< *****Aggiunta MODIFICATA

Verso il fondo una aggiunta e una teoricamente modificata ma praticamente eliminata (istruzione commentata per evidenza)
Codice: Seleziona tutto
        Ruote = 0
        OldN = Cells(I + 1, 1)    '*******<<<< AGGIUNTA AGGIUNTA
    End If
        I = I + 1
'    OldN = Cells(I, 1)  '<<< ******Aggiunta   MODIFICATA, cioe' tolta
Wend

Le righe interessate sono marcate ****

Speriamo bene...
Avatar utente
Anthony47
Moderatore
 
Post: 19181
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Identificare record ripetuti

Postdi Lucio P. » 20/04/09 01:21

Anthony47 ha scritto:Forse ho capito...
Questa "aggiunta" l' ho modificata:
Codice: Seleziona tutto
If OldN <> Cells(I, 1) And OldN <> "" Then '<<< *****Aggiunta MODIFICATA

Verso il fondo una aggiunta e una teoricamente modificata ma praticamente eliminata (istruzione commentata per evidenza)
Codice: Seleziona tutto
        Ruote = 0
        OldN = Cells(I + 1, 1)    '*******<<<< AGGIUNTA AGGIUNTA
    End If
        I = I + 1
'    OldN = Cells(I, 1)  '<<< ******Aggiunta   MODIFICATA, cioe' tolta
Wend

Le righe interessate sono marcate ****

Speriamo bene...




E si, ci sei riuscito!!!
Credo proprio che ringraziarti è dire poco. Complimenti, sei un mago!
Ciao, Lucio
Lucio P.
Utente Junior
 
Post: 82
Iscritto il: 15/04/09 08:53

Re: Identificare record ripetuti

Postdi Lucio P. » 21/04/09 01:22

Come sempre un caloroso ciao a tutti.
Sul medesimo tema è possibile alla fine di ogni ciclo di nove ruote, in questo caso contrassegnate con asterisco, nella colonna "E" fare la sottrazione di C9-C8, e così per tutti i cicli che seguono?
C18-C17………….C27-C26……………C36-C35 inserendo il risultato nella colonna “E”? E rispettando ovviamente il cambio di ogni numero come già ora la macro fa? :roll:


Ringrazio per l'attenzione, Lucio



Codice: Seleziona tutto
1   Ba   7931      
1   Fi   7934      
1   Ve   7940      
1   Ge   7941      
1   To   7946      
1   Ca   7947      
1   Ro   7954      
1   Mi   7956      
1   Na   7963   *   7
1   Ve   7963      
1   Ca   7964      
1   To   7964      
1   Fi   7968      
1   Mi   7970      
1   Ro   7970      
1   Ge   7978      
1   Pa   8014      
1   Ba   8017   *   3
1   Mi   8018      
1   Ge   8019      
1   Fi   8020      
1   Pa   8020      
1   Ve   8027      
1   Ro   8030      
1   Ba   8036      
1   Ca   8036      
1   Na   8038   *   2
2   Na   3950      
2   Ba   3953      
2   Ve   3959      
2   Ro   3961      
2   Pa   3963      
2   Ge   3970      
2   Mi   3974      
2   Fi   3977      
2   To   3996   *   19
2   Ca   3997      
2   Ba   4001      
2   Fi   4001      
2   Ro   4002      
2   Mi   4007      
2   Pa   4007      
2   To   4007      
2   Ve   4011      
2   Na   4016   *   5
2   Ba   4017      
2   Mi   4018      
2   Na   4021      
2   Ro   4021      
2   To   4023      
2   Ge   4024      
2   Ca   4032      
2   Ve   4039      
2   Fi   4048   *   9
3   To   5964      
3   Ca   5967      
3   Pa   5967      
3   Ge   5970      
3   Ba   5975      
3   Fi   5976      
3   Na   5976      
3   Ve   5978      
3   Mi   5986   *   8
3   Mi   5987      
3   Ba   5989      
3   Fi   5989      
3   Na   5990      
3   To   5991      
3   Ca   5996      
3   Ge   6005      
3   Pa   6011      
3   Ve   6016   *   5
3   Na   6020      
3   Ge   6023      
3   Ro   6023      
3   Mi   6031      
3   Ve   6031      
3   Ba   6032      
3   Fi   6040      
3   Pa   6053      
3   To   6068   *   15
Lucio P.
Utente Junior
 
Post: 82
Iscritto il: 15/04/09 08:53

Re: Identificare record ripetuti

Postdi Lucio P. » 21/04/09 01:36

Dimenticavo la macro attuale.


Codice: Seleziona tutto
Dim I As Integer, Ruote As Integer, Ur As Single
Dim BA As Integer, CA As Integer, FI As Integer, GE As Integer, MI As Integer
Dim NA As Integer, PA As Integer, RO As Integer, TOR As Integer, VE As Integer

Sub Lucio()
Ur = Range("A" & Rows.Count).End(xlUp).Row

'Ur = Range("A65536").End(xlUp).Row
Ruote = 0
I = 2
While I <= Ur
If OldN <> Cells(I, 1) And OldN <> "" Then '<<< *****Aggiunta MODIFICATA
Ruote = 9: I = I - 1: GoTo NewN '<<< Aggiunta
End If

    Select Case Cells(I, 2)
        Case "Ba"
            If BA = 1 Then
                Cancella_Doppione I, Ur
            Else
                BA = 1
                Ruote = Ruote + 1
            End If
        Case "Ca"
            If CA = 1 Then
                Cancella_Doppione I, Ur
            Else
                CA = 1
                Ruote = Ruote + 1
            End If
        Case "Fi"
            If FI = 1 Then
                Cancella_Doppione I, Ur
            Else
                FI = 1
                Ruote = Ruote + 1
            End If
        Case "Ge"
            If GE = 1 Then
                Cancella_Doppione I, Ur
            Else
                GE = 1
                Ruote = Ruote + 1
            End If
        Case "Mi"
            If MI = 1 Then
                Cancella_Doppione I, Ur
            Else
                MI = 1
                Ruote = Ruote + 1
            End If
        Case "Na"
            If NA = 1 Then
                Cancella_Doppione I, Ur
            Else
                NA = 1
                Ruote = Ruote + 1
            End If
        Case "Pa"
            If PA = 1 Then
                Cancella_Doppione I, Ur
            Else
                PA = 1
                Ruote = Ruote + 1
            End If
        Case "Ro"
            If RO = 1 Then
                Cancella_Doppione I, Ur
            Else
                RO = 1
                Ruote = Ruote + 1
            End If
        Case "To"
            If TOR = 1 Then
                Cancella_Doppione I, Ur
            Else
                TOR = 1
                Ruote = Ruote + 1
            End If
        Case "Ve"
            If VE = 1 Then
                Cancella_Doppione I, Ur
            Else
                VE = 1
                Ruote = Ruote + 1
            End If
    End Select
NewN:                      '<<< Aggiunta

    If Ruote = 9 Then
        BA = 0: CA = 0: FI = 0: GE = 0: FI = 0: MI = 0: NA = 0: PA = 0: RO = 0: TOR = 0: VE = 0
                   Ruote = 0
            OldN = Cells(I + 1, 1)    '*******<<<< AGGIUNTA AGGIUNTA
        End If
            I = I + 1
    '    OldN = Cells(I, 1)  '<<< ******Aggiunta   MODIFICATA, cioe' tolta
    Wend



End Sub

Sub Cancella_Doppione(I, Ur)
    Rows(I).Select
    Selection.Delete Shift:=xlUp
    Ur = Ur - 1
    I = I - 1
End Sub


Lucio P.
Utente Junior
 
Post: 82
Iscritto il: 15/04/09 08:53

Re: Identificare record ripetuti

Postdi Anthony47 » 21/04/09 16:52

Aggiungi nella macro l' istruzione marcata ++++++
Codice: Seleziona tutto
OldN = Cells(I + 1, 1)    '*******<<<< AGGIUNTA AGGIUNTA
If I > 7 Then Cells(I, 5) = Cells(I, 3) - Cells(I - 1, 3)    '<<<< +++++
End If

Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19181
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Identificare record ripetuti

Postdi Lucio P. » 21/04/09 18:53

Ciao Anthony, mi da un piccolo errore. Quando passa da un numero all'atro mi chiude il ciclo anche se non è composto da nove record, vedi asterisco; per il rimanente è perfetto. Saluti



Codice: Seleziona tutto
1   Mi   4299      
1   To   4303      
1   Ca   4305      
1   Ge   4305      
1   Pa   4306      
1   Fi   4307      
1   Ro   4320      
1   Ba   4324      
1   Ve   4324      0
1   Fi   4326      
1   Mi   4332      
1   Ro   4336      
1   Ca   4338      
1   Ve   4339      
1   Ba   4344      
1   Na   4346      
1   Pa   4347   *   1
2   Mi   4350      
2   Fi   4353      
2   Ro   4356      
2   Ve   4359      
2   Ca   4360      
2   Na   4363      
2   Ba   4367      
2   Ge   4369      
2   To   4375      6
            
            
            
4   Ba   5453      
4   Ca   5456      
4   Ge   5456      
4   Na   5465      
4   Fi   5467      
4   Ve   5469      
4   Mi   5470      
4   Ro   5481      
4   To   5511      30
4   Ba   5513      
4   Ve   5513      
4   Fi   5518      
4   Mi   5518      
4   Pa   5519      
4   Ro   5521      
4   Ge   5534      
4   To   5534   *   0
5   To   5537      
5   Na   5549      
5   Ca   5551      
5   Fi   5552      
5   Ve   5558      
5   Ba   5559      
5   Mi   5559      
5   Pa   5569      
5   Ge   5583      14
Lucio P.
Utente Junior
 
Post: 82
Iscritto il: 15/04/09 08:53

Re: Identificare record ripetuti

Postdi Anthony47 » 21/04/09 19:09

L' ultima variazione inserisce il dato in col E quando un ciclo si completa, o perche' siamo arrivati a 9 ruote o perche' cambia il numero in col A.

E' errata la mia interpretazione o la macro non fa quello che ho capito?

Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19181
Iscritto il: 21/03/06 16:03
Località: Ivrea

PrecedenteProssimo

Torna a Applicazioni Office Windows


Topic correlati a "Identificare record ripetuti":


Chi c’è in linea

Visitano il forum: Nessuno e 33 ospiti