Creazione dato



  • Creazione dato
    di sergran (utente non iscritto) data: 25/06/2013 02:15:31

    Ciao tutti, avrei bisogno din un vostro aiuto.
    Io ho un elenco formato da una colonna di marche di auto, una di modelli di auto ed una colonna con dei numeri ( le chiamerò rispettivamente Marca Auto e Numeri )
    Avrei bisogno che

    Audi / A1 / 25212
    Audi / A1 / 52645
    Audi / A1 / 25212
    BMW / X5 / 32546

    Io avrei bisongo di ottenere questo:

    Audi / A1 / 25212 --> AU0001_01
    Audi / A1 / 52645 --> AU0002_01
    Audi / A1 / 25212 --> AU0001_02
    BMW / X5 / 32546 --> BM0003_01

    In pratica nella 1° e 3° riga essendo il numero (25212 ) uguale, il _01 è passato a _02, mentre essendo partiti con 0001 nella prima riga, la seconda riga è passata a 0002_01 e la 4° a 0003_01

    Le lettere AU e BM sono le prime 2 lettere della marca.

    Spero di essermi spiegato e spero soprattutto che qualcuno mi possa aiutare... io di programamzione sono "0"




  • di totygno71 (utente non iscritto) data: 25/06/2013 09:40:31

    Ciao Sergran

    ma il modello dell'auto non incide in nessun modo nel codice finale vero?



  • di Vecchio Frac data: 25/06/2013 09:58:42

    Stante la tabella in colonna A, questa è la mia proposta.
    Tieni conto che effettua un ordinamento alfabetico sulla colonna A (se questo è fastidioso occorre studiare un sistema diverso).
    Però secondo me, a logica, BMW / X5 / 32546 --> BM0001_01

     
    Option Explicit
    
    Sub codifica()
    Dim j As Long, i As Long, prev As String, cell As Range
    
        [a:a].Sort key1:=[a1], order1:=xlAscending, header:=xlNo
        
        j = 1
        prev = [a1]
        For Each cell In [a:a]
            If Trim(cell) = "" Then Exit For
            If cell = prev Then
                i = i + 1
            Else
                prev = cell
                i = 1
                j = j + 1
            End If
            cell.Offset(, 1) = UCase(Left(cell, 2)) & Format(j, "0000") & Format(i, "_00")
        Next
        
    End Sub
    






  • di sergran (utente non iscritto) data: 25/06/2013 10:29:50

    Ciao e grazie molte per la risposta.
    In effetti ho commesso un errore come giustamente hai notato.... BM0001_01 e non BM0003_01
    Però c'è un problema. Con il codice da voi suggerito, ottengo

    Audi / A1 / 25212 --> AU0001_01
    Audi / A1 / 52645 --> AU0001_02 <--- NO
    Audi / A1 / 25212 --> AU0001_03
    BMW / X5 / 32546 --> BM0001_01

    mentre io vorrei ottenere

    Audi / A1 / 25212 --> AU0001_01
    Audi / A1 / 52645 --> AU0002_01 <--- SI
    Audi / A1 / 25212 --> AU0001_02
    BMW / X5 / 32546 --> BM0003_01

    In pratica il numero che segue le iniziali della Marca deve variare in funzione del dato nella colonna Numeri Nello specifico, se il dato Numeri una volta è 25212 e un'altra volta 3600, si dovrà ottenere ad es. 0001 e 0002
    La numerazione partirà da 0001 ogni qualvolta cambi il nome della Marca.
    Grazie 1000 Ciao

    P.s. Il modello dell'auto non incide in nessun modo nel codice finale



  • di Mister_x data: 25/06/2013 20:57:33

    ciao

    visto la tua richiesta, non avevo voglia di scervellarmi con una sub() e per fare questo ho utilizzato tre colonne di appoggio e nella quarta troverai il risultato voluto nel file allegato
    si intende che le colonne di appoggio colorate di giallo le puoi nascondere

    ti allego il file dove puoi capire meglio quello che ho fatto perche' spiegarlo mi stanco

    ciao da Mister_x



  • di sergran (utente non iscritto) data: 25/06/2013 21:32:39

    Grazie 1000!!! Dove posso recuperare il file alelgato?



  • di sergran (utente non iscritto) data: 25/06/2013 21:34:18

    Trovato.... grazie



  • di sergran (utente non iscritto) data: 25/06/2013 21:37:56

    Ciao, scusa ma non riesoc a farlo funzionare. Come posso allegare un xls?



  • di sergran (utente non iscritto) data: 25/06/2013 21:50:14

    Cacchio!!!!!! Ho sbagliato io...scusa!!!! Ho sbagliato a esporre il problema nella discussione
    Il xls funziona. Sarebbe possibile modificarlo inserendo:
    nella colonna A "ID" che dev'essere ignorata dalla funzione
    nella colonna B "Marca"
    nella colonna C "Modello"
    nella colonna D "Numero Autodata"
    Grazie e scusa la confusione



  • di sergran (utente non iscritto) data: 25/06/2013 22:03:36

    Sono riuscito a sistemare quasi tutto eccetto la funzione che peremtte di azzerare il conteggio quando cambia la marca.



  • di sergran (utente non iscritto) data: 25/06/2013 22:07:06

    Il file è perefetto. L'unica cosa che mi servirebbe è che ogni qualvolta cambia la marca, il conteggio venisse azzerato
    Vi faccio un esempio
    Audi A4 52666 AU0001_01
    Audi A6 52666 AU0001_02
    BMW X1 54555 BM0001_01



  • di sergran data: 25/06/2013 23:42:42

    Risolto...basta inserire un elenco di auto per marca
    Grazie ancora Coap