Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Macro excel confonto listini tramite codice ean

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: Macro excel confonto listini tramite codice ean

Postdi Maxpower2 » 26/06/12 11:18

Flash,

ti ringrazio veramente, funziona alla grande ed è velocissimo.
Ti sono debitore....ora che mi sto intrippando con le macro voglio provare altre cose....e sicuramente avrò bisogno del tuo aiuto.

Thanks :lol:
Maxpower2
Utente Junior
 
Post: 10
Iscritto il: 20/06/12 11:17

Sponsor
 

Re: Macro excel confonto listini tramite codice ean

Postdi ricky53 » 26/06/12 11:20

Ciao a tutti,
io ho un metodo empirico per dire se un tempo di elaborazione è accettabile e meno:
Premo click
Faccio un grosso respiro e trattengo il fiato
aspetto il termine dell'elaborazione e ...

se devo riprendere fiato prima del temine dell'elaborazione ... DECIDO che il TEMPO di ELABORAZIONE è ECCESSIVO !!!

Vi piace il mio metodo ???

Qualche anno fa "58" secondi (anche di più ...) sarei riuscito ad attenderli oggi NO !!!

Comunque rispetto alla precedente soluzione penso che sia un tempo più che accettabile.


Solo per mio sfizio mi inviate i files perchè vorrei provare il mio codice.
Grazie
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: Macro excel confonto listini tramite codice ean

Postdi Flash30005 » 26/06/12 12:06

Io uso le bombole! :D

@Ricky
Per i file lo farei volentieri (perché conosco la tua serietà e riservatezza) ma non so se ci sono dati privati e/o personali che l'utente voglia diffondere, quindi, eventualmente, sarà MaxPower2 ad inviarteli oppure se mi darà il consenso, lo farò personalmente

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: Macro excel confonto listini tramite codice ean

Postdi ricky53 » 26/06/12 13:06

Ciao,
bene attendo sempre se la questione è ancora aperta.

Attento all'azoto e fai la giusta decompressione !!!
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: Macro excel confonto listini tramite codice ean

Postdi Flash30005 » 27/06/12 01:39

E' aperta perché ognuno ha cercato di ottimizzare la macro al fine di ottenere tempi migliori
Fino ad ora la macro inviatami da Anthony risulta la migliore con 41,5 secondi contro i 59 secondi circa della mia macro e quella di Ricky.
Con questa macro si ha un risparmio di tempo del 33% circa, quindi posto la macro di Anthony
Codice: Seleziona tutto
Sub ImportaDatiAnth()
Dim Varr1, VArr2
Range("T2:W2").ClearContents   '<<<< si può togliere
[T2] = Timer                '<<<< si può togliere
Application.ScreenUpdating = False
Application.Calculation = xlManual
Perc = ThisWorkbook.Path
NomeF = ThisWorkbook.Name
Dim Ws1, Ws4 As Worksheet
Set Ws1 = Worksheets("Dati")
Worksheets("Dati").Range("P1:P10000").ClearContents
Varr1 = Ws1.Range("B1:B10000")
For NF = 1 To 2
    NFile = "listino_figlio" & NF & ".xls"
    ColF = 14
    ColP = 8
    If NF = 2 Then
        ColF = 12
        ColP = 13
    End If
    FileT = Perc & "\" & NFile
    Workbooks.Open(FileT).Activate
    Set Ws4 = Workbooks(NFile).Worksheets("Foglio1")
    URF = Ws4.Range("N" & Rows.Count).End(xlUp).Row
    Workbooks(NomeF).Activate
    VArr2 = Ws4.Cells(1, ColF).Resize(URF + 2, 1)
    For RRF = 2 To URF
        RRM = Application.Match(VArr2(RRF, 1), Varr1, 0)
       If Not IsError(RRM) Then Ws1.Range("P" & RRM).Value = Ws4.Cells(RRF, ColP).Value
    Next RRF
    Workbooks(NFile).Close savechanges:=False
        If NF = 1 Then              ' <<<< si può togliere
            [U2] = Timer - [T2]  '<<<< si può togliere
            [V2] = Timer            '<<<< si può togliere
            Application.ScreenUpdating = True   '<<<< si può togliere
            Application.ScreenUpdating = False  '<<<< si può togliere
        End If                           '<<<< si può togliere
Next NF
On Error GoTo 0
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
[W2] = Timer - [V2]  '<<<< si può togliere
End Sub


Le righe evidenziate si possono cancellare perché servono solo a calcolare il tempo impiegato sia dal primo sia dal secondo file

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: Macro excel confonto listini tramite codice ean

Postdi ricky53 » 27/06/12 12:03

Ciao,
con tre file che mi sono creato 10.000, 5.000 e 10.000 righe ottengo
Flash : 00:11,765
Ricky53 : 00:11,842
Anthony: 01:02,348

poi ho modificato la seguente istruzioni in Flash
Codice: Seleziona tutto
RRM = Application.WorksheetFunction.Match(Ws4.Cells(RRF, ColF), Ws1.Range("B1:B" & URM), 0)
in
RRM = Application.Match(Ws4.Cells(RRF, ColF), Ws1.Range("B1:B" & URM), 0)


e in Ricky53
Codice: Seleziona tutto
RRM = Application.WorksheetFunction.Match(Matr4(RRF, 1), Ws1.Range("B1:B" & URM), 0)
in
RRM = Application.Match(Matr4(RRF, 1), Ws1.Range("B1:B" & URM), 0)

ed ho ottenuto
Flash : 00:05,527
Ricky53 : 00:04,501

Non mi tornava il tempo di Anthony e poi provando ho modificato la seguente istruzione
Codice: Seleziona tutto
RRM = Application.Match(VArr2(RRF, 1), Varr1, 0)
in
RRM = Application.Match(VArr2(RRF, 1), Ws1.Range("B1:B10000"), 0)

ed ho ottenuto
Anthony : 00:04,449

Adesso mi torna tutto e ... con tempi ottimi e confrontabili fra di loro.

I tempi sono bassi perchè ho inserito solo qualche centinaio di corrispondenze tra i vari file altrimenti salgono ... all'autore del quesito fare le prove.
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

Precedente

Torna a Applicazioni Office Windows


Topic correlati a "Macro excel confonto listini tramite codice ean":


Chi c’è in linea

Visitano il forum: giorgio1979 e 12 ospiti