Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

confronta indice e copia se....

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

confronta indice e copia se....

Postdi deniel69 » 09/11/14 11:26

Buon giorno a tutti...
Ho bisogno di aiuto, ho alcuni fogli su cui ho dati da associare al foglio ANDREA se la matricola in colonna B trova una corrispondenza nel foglio ANDREA.
Ovvero se le matricole corrispondono, devo copiare i dati presenti nella riga corrispondente alla matricola cercata e riportarli nel foglio interessato ,riportando solo alcuni dati presenti in determinate colonne.
Ho scritto il codice seguente iniziando con il foglio "351" ,ma non funziona e mi riporta solo alcune righe e a volte nessuna.
Premessa: Nel foglio ANDREA le matricole sono precedute da una lettera ,mentre nei fogli sono solo composte da numeri, esempio R1246/14 - 1246/14.
Codice....

Codice: Seleziona tutto
Sub Controllo()
Dim LRow, rowsUpdtd As Single
    Application.EnableEvents = False
    LRow = Worksheets("351").Range("A" & Rows.Count).End(xlUp).Row
    If LRow > 1 Then
        Worksheets("351").Range("R3:V" & Rows.Count).Clear
    End If
   
    Dim i, j, iLRow, jLRow, foundRow As Single
    Dim matricola As String
    iLRow = Worksheets("351").Range("A" & Rows.Count).End(xlUp).Row
   
    Application.ScreenUpdating = False
    rowsUpdtd = 0
    For i = 3 To LRow
        foundRow = 0
        matricola = Worksheets("351").Cells(i, "B").Value
       
        With Worksheets("ANDREA").Range("B2:B" & iLRow)
            Set cell = .Find(matricola)
            If Not cell Is Nothing Then
                    foundRow = cell.Row
                    rowsUpdtd = rowsUpdtd + 1
            End If
        End With
       
        If foundRow > 0 Then
            'ROTORE
            Worksheets("ANDREA").Range("E" & foundRow).Copy _
            Destination:=Worksheets("351").Range("R" & i)
           
            '2 STADIO
            Worksheets("ANDREA").Range("F" & foundRow).Copy _
            Destination:=Worksheets("351").Range("S" & i)
           
            '301
            Worksheets("ANDREA").Range("J" & foundRow).Copy _
            Destination:=Worksheets("351").Range("T" & i)
           
            '3STADIO
            Worksheets("ANDREA").Range("K" & foundRow).Copy _
            Destination:=Worksheets("351").Range("U" & i)
           
            '351
            Worksheets("ANDREA").Range("L" & foundRow).Copy _
            Destination:=Worksheets("351").Range("V" & i)
                 
        End If
    Next i
   
    Application.EnableEvents = True
   
    MsgBox ("Aggiornate " & rowsUpdtd & " matricole!")

End Sub


Dove sbaglio? Grazie anticipato a chi mi darà aiuto........
Avatar utente
deniel69
Utente Senior
 
Post: 113
Iscritto il: 17/04/12 22:43

Sponsor
 

Re: confronta indice e copia se....

Postdi Anthony47 » 09/11/14 23:04

La richiesta sara' comprensibile solo con la presenza di un file esemplificativo, idoneo anche a funzionare come ambiente di test.
Per allegarne uno usa un servizio di filesharing, es dropbox.com o filedropper.com.

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: 13904
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: confronta indice e copia se....

Postdi deniel69 » 10/11/14 15:32

Come da richiesta condivido un file che sembra funzionare correttamente.....

link: http://www.4shared.com/file/8TxBgAvuba/Funzionante.html

Vorrei sapere se è tutto corretto o se posso migliorare in qualche modo il confronto tra le matricole ....

grazie a tutti !!!
Avatar utente
deniel69
Utente Senior
 
Post: 113
Iscritto il: 17/04/12 22:43

Re: confronta indice e copia se....

Postdi Anthony47 » 10/11/14 16:07

Come da richiesta condivido un file che sembra funzionare correttamente.....
link: http://www.4shared.com/file/8TxBgAvuba/Funzionante.html
Ci sono troppi tasti Download sulla schermata, non sono riuscito nei primi tre tentativi a trovare quello che consente di scaricare il file e non un indesiderato altro programma; pertanto ho rinunciato.
Vorrei sapere se è tutto corretto o se posso migliorare in qualche modo il confronto tra le matricole ....
Se funziona correttamente lo puoi controllare solo tu, che conosci i tuoi dati e il tuo processo; quanto a "miglioramenti" io dico sempre che l' ottimo e' nemico del bene, per cui se funziona bene lo lascerei come e'... Si, sono un pelandrone!

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: 13904
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: confronta indice e copia se....

Postdi ricky53 » 10/11/14 16:15

Ciao,
Anthony ti aveva consigliato anche "FileDropper" che NON crea problemi nel download come fa il sito che hai scelto tu ...
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. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: confronta indice e copia se....

Postdi deniel69 » 10/11/14 18:50

ok ....vi ringrazio comunque........risolto!
Avatar utente
deniel69
Utente Senior
 
Post: 113
Iscritto il: 17/04/12 22:43

Re: confronta indice e copia se....

Postdi ricky53 » 11/11/14 00:15

Ciao,
ti ricordo che è buona norma riportare nel forum, a beneficio di tutta la comunità, la soluzione trovata.

Grazie per la collaborazione
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. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: confronta indice e copia se....

Postdi Anthony47 » 11/11/14 03:38

Ciao Ricky, credo che deniel avesse gia' pubblicato la soluzione...
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: 13904
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: confronta indice e copia se....

Postdi ricky53 » 11/11/14 17:01

Ciao Anthony,
SI vero ma il sito presentava alcuni ... trucchetti per il download.
Sarebbe utile avere la soluzione su un sito ... "pulito".
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. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: confronta indice e copia se....

Postdi deniel69 » 13/11/14 18:48

Chiedo scusa a tutti .....
Ho capito dove era l'errore ,facevo il controllo sul foglio sbagliato "351" invece di "ANDREA".
Ho indicato il punto con un commento nel nuovo codice, provato e funzionante.....

Grazie ancora a tutti comunque e ancora scusate per il ritardo nella risposta ,ho avuto un po da fare.....


Sub Controllo()
Dim LRow, rowsUpdtd As Single
Application.EnableEvents = False
LRow = Worksheets("ANDREA").Range("A" & Rows.Count).End(xlUp).Row '<==== il Foglio era quello sbagliato
If LRow > 1 Then
Worksheets("351").Range("R3:AG" & Rows.Count).Clear
End If

Dim i, j, iLRow, jLRow, foundRow As Single
Dim matricola As String
iLRow = Worksheets("ANDREA").Range("A" & Rows.Count).End(xlUp).Row

Application.ScreenUpdating = False
rowsUpdtd = 0
For i = 3 To LRow
foundRow = 0
matricola = Worksheets("351").Cells(i, "B").Value

With Worksheets("ANDREA").Range("B2:B" & iLRow)
Set cell = .Find(matricola)
If Not cell Is Nothing Then
foundRow = cell.Row
rowsUpdtd = rowsUpdtd + 1
End If
End With

If foundRow > 0 Then
'ROTORE
Worksheets("ANDREA").Range("E" & foundRow).Copy _
Destination:=Worksheets("351").Range("R" & i)

'2 STADIO
Worksheets("ANDREA").Range("F" & foundRow).Copy _
Destination:=Worksheets("351").Range("S" & i)

'301
Worksheets("ANDREA").Range("J" & foundRow).Copy _
Destination:=Worksheets("351").Range("T" & i)

'3STADIO
Worksheets("ANDREA").Range("K" & foundRow).Copy _
Destination:=Worksheets("351").Range("U" & i)

'351
Worksheets("ANDREA").Range("L" & foundRow).Copy _
Destination:=Worksheets("351").Range("V" & i)

End If
Next i

Application.EnableEvents = True

MsgBox ("Aggiornate " & rowsUpdtd & " matricole!")

End Sub
Avatar utente
deniel69
Utente Senior
 
Post: 113
Iscritto il: 17/04/12 22:43


Torna a Applicazioni Office Windows


Topic correlati a "confronta indice e copia se....":


Chi c’è in linea

Visitano il forum: rogermo e 10 ospiti