Trova Macro Ean e codici



  • Trova Macro Ean e codici
    di Andrea (utente non iscritto) data: 30/05/2014 19:56:41

    Salve, ho un grossissimo problema con un file excel costituito da tantissimi valori (circa 300000).

    Questo file consiste in una leggenda dove nella colonna A sono presenti i codici di riferimento che in alcuni casi si ripetono più volte senza una regolarità, mentre nella colonna B sono presenti i codici ean (solo numeri) ed anche dei codici interni di magazzino (costituiti da: delle lettere e numeri con tanti zeri all'inizio del codice e in alcuni casi solo tanti zeri all'inizio del codice).

    Vorremo quindi una macro che si comporti in questo modo:

    - In caso di codice di riferimento identici ripetuti più volte, voglio che venga preso, un solo codice di riferimento, con il suo rispettivo codice ean tralasciando il codice interno.
    - In caso di codici ean identici ripetuti più volte su uno stesso codice riferimento, voglio che venga preso solo 1. (vedi esempio 0263171)
    - In caso di mancanza di codici ean relativo ad un determinato codice di riferimento basta che prenda il codice di magazzino. (vedi espempio 0263172)

    Esempio da così:

    colonna a........... colonna b
    0263165................4002515193435
    0263165................0000000000900
    0263166................000000005N2D0
    0263166................4002515193433
    0263167................000000005N2E0
    0263167................4002515193440
    0263168................000000005N2F0
    0263168................4002515193457
    0263169 ................4002515193730
    0263169................000000005N2G0
    0263170................000000005N2H0
    0263170................4002515188965
    0263171................886919007824
    0263171................000000005N2I0
    0263171................0886919007824
    0263172................000000005N5I0

    a così:

    colonna a........... colonna b
    0263165................4002515193435
    0263166................4002515193433
    0263167................4002515193440
    0263168................4002515193457
    0263169 ................4002515193730
    0263170................4002515188965
    0263171................886919007824
    0263172................000000005N5I0


  • Trova Macro Ean e codici
    di andrea (utente non iscritto) data: 30/05/2014 20:15:46

    ho difficoltà a caricare il file, vi indico il link di dropbox:

    dropbox.com/s/he1ojtohexdilqw/ean.xlsx

    grazie per l'aiuto



  • di Vecchio Frac data: 31/05/2014 10:57:33

    Anche senza macro, con una sola formula, in un modo piuttosto semplice.
    La formula numera progressivamente i diversi valori e ricomincia da 1 ogni volta che trova un codice di riferimento nuovo.
    Quindi basta un filtro automatico sui valori "1" per avere l'elenco delle sole prime ricorrenze dei codice EAN senza i sottocodici di magazzino.

     
    'in colonna A i codici di riferimento
    'in colonna B i codici EAN e i sottocodici
    
    'effettua n ordinamento dei dati con ordine crescente per la colonna A e in ordine decrescente per la colonna B
    
    'formula in colonna C la cui prima riga è etichettata per esempio "match":
    =SE(A1=A2;C1+1;1)
    
    'la formula va trascinata per tutte le righe del database
    
    'fai un filtro automatico sulla terza colonna match e individua i valori "1"
    
    'copia e incolla altrove il risultato





  • trova macro ean e codici
    di andrea (utente non iscritto) data: 31/05/2014 12:33:20

    Grazie per la tempestiva risposta, io purtroppo non ho dimestichezza con Excel, non ci sarebbe una macro?

    Grazie ancora di tutto.

    Andrea



  • di lepat (utente non iscritto) data: 31/05/2014 13:26:00

    non sapevo che le macro sono più alla portata degli utenti inesperti


  • Trova Macro Ean e codici
    di andrea (utente non iscritto) data: 31/05/2014 13:41:24

    Ciao, ho provato ma non va bene in quanto:

    -Quando c'è solo un codice di riferimento senza doppioni, collegato a un codice di magazzino e non c'è nessun codice ean la formula me lo salta invece non deve saltarlo, ma deve prendermi in questo caso il codice di magazzino. (vedi esempio 0263172)

    -può capitare anche che il codice ean precede quello di magazzino e non una logica di posizioni.

    ci vorrebbe una macro che ragionasse in questo modo senza seguire una logica di posizioni (perché alcune volte esse possono essere diverse):

    in presenza di molti codice di riferimento doppioni venga preso sempre un codice ean di riferimento tralasciando il codice di magazzino che può essere costituito da: minimo cinque 0 iniziali o dalle lettere o ancora da entrambi.

    i presenza di un solo codice di riferimento venga preso il codice ean e se non fosse presente il codice interno di magazzino di riferimento.

    spero di essermi spiegato meglio

    grazie mille



  • di lepat (utente non iscritto) data: 31/05/2014 13:57:25

    come si riconosce un codice ean da quello di magazzino ?



  • di Vecchio Frac data: 31/05/2014 14:00:38

    Uhm, eppure a me sembra che i criteri imposti siano stati rispettati e il risultato sia quello atteso.
    Allego quindi il file che ho usato per le prove ("esempio vfrac.xls").
    Probabilmente ci vorrebbe una base dati più ampia.
    In ogni caso ti confermo che è possibile realizzare una macro che faccia quel che fai manualmente: solo che forse è più alla portata lo strumento della "formula" di Excel che non un codice da mantenere e adattare a seconda delle esigenze.





  • di Vecchio Frac data: 31/05/2014 14:02:42

    L'osservazione di lepat è molto pertinente... io suppongo che si tratti sempre dei codici con la "N" o quelli più piccoli (c'è infatti un "0000000000900").




  • trova macro ean e codici
    di andrea (utente non iscritto) data: 31/05/2014 14:41:20

    Il codice ean è costituito solo da numeri, mentre il codice interno di magazzino posso essere di due tipi:

    - costituito da delle lettere e numeri
    - costituito da solo numeri pero che iniziano sempre con molti zeri (minimo 4/5 zeri)

    Mentre l ean è costituito solo da numeri e non è costituito mai da cosi tanti zeri nella parte iniziale, al Massimo tre.

    N.b. in caso ci sia solo un codice di riferimento e non ci sono doppioni, deve prendere il codice relativo (non importa se è il codice di magazzino) non lo deve tralasciare.



  • di Vecchio Frac data: 31/05/2014 21:26:59

    La mia proposta non tralascia niente, hai provato a dare un'occhiata? Essa numera i codici in colonna A partendo da 1 e numerando quelli uguali in progressione. Quindi la prima ricorrenza di ogni codice ha il numero 1.
    Alla fine, filtrando sui numeri 1 così assegnati ottieni il risultato cercato, niente viene tralasciato e vengono considerate solo le prime occorrenze che di solito non sono codici di magazzino ma EAN secondo il criterio da te impostato.




  • Trova Macro Ean e codici
    di Andrea (utente non iscritto) data: 01/06/2014 12:33:45

    Ciao Vecchio Frac e Lepat, ho visto il file che ha allegato vecchio frac, ma purtroppo il risultato è sbagliato nei codici di riferimento:

    0263170 ..... perchè ha preso il codice di magazziono e non l'ean

    0263168 ...... perchè ha preso il codice di magazziono e non l'ean

    0263167....... perchè ha preso il codice di magazziono e non l'ean

    0263166....... perchè ha preso il codice di magazziono e non l'ean


    secondo me bisognerebbe trovare una macro che esclude la possibilità di prendere dei codici contenenti delle lettere e in caso in cui ci sia solo numeri, quello di escludere codici che iniziano con 5 zeri (codici di magazzino). in questo modo prenderebbe sempre gli ean.
    Però nel caso ci fosse un solo il codice di riferimento ossia non ci siano doppioni deve lasciare così come sta e prendere il codice relativo (codice di magazzino o ena che sia)
    Una volta fatto questo troveremmo solo codici di riferimento doppioni con i relativi codici ean (e qualche volta solo un codice di riferimento con un codice di magazzino o ean) e in questo caso si avvia la macro per l'eliminazione dei doppioni dei codici di riferimento con i loro relativi codici ean doppioni.

    E abbiamo così un file giusto

    Che ne dite?



  • di Vecchio Frac data: 02/06/2014 11:47:18

    L'esempio che ho allegato sbaglia solo nell'impostare l'ordinamento crescente per la colonna B mentre va fatto decrescente come avevo spiegato in un post precedente. Riallego il file con l'ordinamento corretto ("esempio vfrac corretto.rar").
    Dopo aver filtrato la colonna match sui valori "1", il risultato finale è quello che ti aspetti.
     
    colonna a	 colonna b 	       match
    0263165	4002515193435 	1
    0263166	4002515193433 	1
    0263167	4002515193440 	1
    0263168	4002515193457 	1
    0263169	4002515193730 	1
    0263170	4002515188965 	1
    0263171	886919007824 	1
    0263172	000000005N5I0	1
    





  • Trova Macro Ean e codici
    di Andrea (utente non iscritto) data: 03/06/2014 20:04:13

    Ciao Vecchio Frac, ho visto il nuovo file è funziona alla perfezione, ti chiedo Tanto se puoi trasformare tale formula in Macro (Tieni Conto Che ho 350.000 Codici per ogni colonna). Grazie Tantissimo.

    Andrea



  • di isy data: 03/06/2014 22:52:17

    Ciao

    Prova ad adattare il codice seguente, spero non ci siano problemi se non visualizzo lo Zero all'inizio del valore Es: 0263165
     
    'In un Modulo:
    
    Option Explicit
    
    Sub DemoVba()
        Const Riga As Long = 2
        Dim r   As Long, dic As Object
        Dim Data As Variant
        Dim i As Long, l As Long
        Dim k
        Dim j
        r = Range("A" & Rows.Count).End(xlUp).Row
        Data = Range("A" & Riga & ":B" & r)
        Set dic = CreateObject("scripting.dictionary")
        dic.comparemode = 1
        For i = 1 To UBound(Data, 1)
            dic.Item(Data(i, 1)) = dic.Item(Data(i, 1)) + 1 'add the count
        Next
        ReDim pos(1 To UBound(dic.items) + 1, 1 To 2)
        j = 1
        For Each k In dic.items
          l = l + 1
          pos(l, 1) = Data(j, 1)
          pos(l, 2) = Data(j, 2)
          j = j + k
        Next
        Range("M1") = "colonna a"
        Range("N1") = "colonna b"
        Range("M2:N2").Resize(dic.Count) = pos
    End Sub
    


  • Trova Macro Ean e codici
    di andrea (utente non iscritto) data: 04/06/2014 09:44:10

    Ho provato la macro ma non va, ad esempio al codice 263170 prende il codice di magazzino e non l'ean

    Andrea