Elenco univoco



  • Elenco univoco
    di FABRY (utente non iscritto) data: 13/04/2015 16:39:15

    Cerco un codice che permette di estrarre un elenco univoco e nell'estrazione assegna un codice a tutte le righe appartenenti alla voce univoca esp.
    Pere
    Mele
    Pere
    Banane
    Mele
    Estrazione:
    Pere 01 13/04/2015
    Mele 02 13/04/2015
    Banane 03 13/04/2015
    E nell'elenco visitato inserisce il codice

    Mele 02 13/04/2015
    Pere 01 13/04/2015
    Banane 03 13/04/2015
    Mele 02 13/04/2015
    Qualcuno mi può aiutare. Grazie




  • di Mister_x (utente non iscritto) data: 13/04/2015 17:39:22

    ciao

    faccio prima a passarti il mio file di prova
    l'unica cosa che ti dico cosa ho fatto
    ho preso l'elenco di colonna A e ho copiato il tutto in colonna M:M poi dal menu in alto ho selezionato dati e con rimuovi duplicati ho cheato un elenco univoco al quale ho assegnato un valore univoco, vedi formula
    dopo in colonna B in B1 a scendere ho inserito unaltra formula che mi ha creato quello che tu vuoi fare

    Pere 01 13/04/2015
    Mele 02 13/04/2015
    Pere 01 13/04/2015
    Banane 03 13/04/2015
    Mele 02 13/04/2015

    ciao





  • di Fabry (utente non iscritto) data: 13/04/2015 17:43:41

    Grazie per la tua immedista risposta.Come faccio a scaricare il file



  • di Mister_x (utente non iscritto) data: 13/04/2015 17:47:02

    ciao

    in alto a destra, clicca sull'allegato che vedi e automaticamente lo scarichi

    ciao





  • di Fabry (utente non iscritto) data: 13/04/2015 18:01:04

    Ho visto il file. scusa se prima non sono stato chiaro ma mi serviva un codice in vba.
    quel 01 corrisponde ad un codice e la data ad una data da assegnare. tutte e due sono in colonne separate.
    Sto tentando di modificare un codice che ho trovato in rete ma non ci riesco
     
    Option Explicit
    
    Sub copia_senza_ripetizione()
    'routine del sito
    Dim Elenco As New Collection
    Dim IntervOrig As Range
    Dim IntervDest As Range
    Dim Riga, R1, Codice, Tot1, Tot2, Tot3, Tot4
    '    Worksheets("Foglio1").Select
    '    definisco l'intervallo di origine
    
    With Range("A1").CurrentRegion
    Set IntervOrig = .Offset(1, 0).Resize(.Rows.Count - 1, .Columns.Count)
    End With
    '    IntervOrig.Select
    '    creazione della collection dei dati univoci
    '    nella colonna 2 stanno i dati che si vogliono rendere univoci
    On Error Resume Next
    
    For Riga = 1 To IntervOrig.Rows.Count
    Worksheets("foglio1").Cells(1, 14) = Worksheets("foglio1").Cells(1, 14) + 1
    Elenco.Add IntervOrig(Riga, 2).Value, CStr(IntervOrig(Riga, 2).Value)
    IntervOrig(Riga, 9).Value = Worksheets("foglio1").Cells(1, 14)
    IntervOrig(Riga, 10).Value = Date
    Next
    
    On Error GoTo 0
    '   definisco l'intervallo di destinazione che è subito sotto le intestazioni di colonna
    '   ATTENZIONE A QUESTO
    Set IntervDest = Range("A30:E30").Offset(1, 0)
    '   IntervDest.Select
    '   debbo sommare i dati relativi a
    '   qta posa    importo posa    qta forn    importo forn
    '   che nella tabella originale stanno nelle colonne 5, 6, 7, 8
    '   e che nella tabella di destinazione sono nelle colonne 2, 3, 4, 5
    For Riga = 1 To Elenco.Count
        Codice = Elenco(Riga)
        IntervDest(Riga, 1) = Codice
        Tot1 = 0: Tot2 = 0: Tot3 = 0: Tot4 = 0
        For R1 = 1 To IntervOrig.Rows.Count
            If IntervOrig(R1, 2) = Codice Then
                Tot1 = Tot1 + IntervOrig(R1, 5)
                Tot2 = Tot2 + IntervOrig(R1, 6)
                Tot3 = Tot3 + IntervOrig(R1, 7)
                Tot4 = Tot4 + IntervOrig(R1, 8)
            End If
        Next
        IntervDest(Riga, 2) = Tot1
        IntervDest(Riga, 3) = Tot2
        IntervDest(Riga, 4) = Tot3
        IntervDest(Riga, 5) = Tot4
    Next
    End Sub



  • di Mister_x (utente non iscritto) data: 13/04/2015 18:18:42

    ciao

    a questo punto devi postare tu il file con la sub() o macro inserita, in quanto al primo approccio ho visto cosa fa ma non avendo a disposizione il file non si sa dove apportare modifiche per fare questo
    comunque nel tuo file scrivi gia il risultato che vuoi e dove vuoi ottenerlo bastano alcune righe di esempio per capire cosa fare

    ciao





  • di Fabry (utente non iscritto) data: 13/04/2015 18:40:46

    Ho inviato il file con il codice e le modifiche che vorrei che il codice facesse. Grazie per la tua disponibilità.



  • di Mister_x (utente non iscritto) data: 14/04/2015 00:41:50

    ciao

    per farti capire il funzionamento ho riscritto tutta la sub() per fare la tabella univoca in A31 a scendere, dato che tu il file che hai postato e' in versione 2003 e mancano delle funzioni che in 2007 e sup sono state inserite, tutto il resto lo fatto con le funzioni native di excel senza l'utilizzo di sub()

    ti riallego il file con le modifiche apportate

    ciao






  • di Fabry (utente non iscritto) data: 14/04/2015 18:42:06

    Ho visto il file che mi hai mandato ma, filtra solo il nominativo. Nel file ti ho indicato un esempio di quello che mi serve lo suddivido in due tempi:
    1. Un codice che mi controlla la tabella dalla data alla data esempio (01/01/2015 al 31/01/2015) scorrendo la tabella ad ogni cliente univoco assegni un numero di fattura con la data della fattura esp. (31/01/2015). (vedi file di esempio).
    2. Un codice che mi estrae i clienti con nominativo o codice univoco insieme al numero di fattura e data assegnata e li incolli nel foglio 2.

    Forse quello che chiedo è un po complesso e non sò se sono riuscito a spiegarmi, forse il file rende più l'idea di quello che mi serve. Grazie della disponibilità e della pazienza.



  • di Fabry (utente non iscritto) data: 16/04/2015 15:19:02

    Ciao, Non sò se hai analizzato l'ultima richiesta. E' possibile realizzarla? Grazie



  • di Mister_x (utente non iscritto) data: 16/04/2015 18:46:33

    ciao

    ti posto il file con la sub() che fa questo lavoro con controllo sia la nome che alla data
    tab_univ bis.xlsm
    ciao





  • di Fabry (utente non iscritto) data: 17/04/2015 15:20:13

    Scusa mister se forse ti stò facendo perdere tempo, ma come ti dicevo nel messaggio precedente volevo che fosse un codice vba ad assegnare il numero fattura e la data ai ddt in elenco in base al cliente e non una formula, perchè ho paura che cancellando una formula si facciano degli errori. In seguito dopo aver assegnato il numero fattura e la data estrapoli un elenco univoco dei clienti con numero e fattura assegnati. Ti ho inserito nel file un form che gestisca e filtra l'elenco. Grazie



  • di Mister_x (utente non iscritto) data: 17/04/2015 17:50:02

    ciao

    per mio conto la procedura che ho attuato, di creare un elenco univoco in base al nome e le date mi sembra giusto, dare un numero di fatturazione non con le formule ma con un ciclo for la cosa e' semplice
    per il resto questo va gestito tutto con funzioni native di excel,altrimenti se lo devi gestire tutto tramite VBA implica da parte tua di saper utilizzare al meglio la programmazione
    ti allego il pezzo che devi inserire nella Sub() per fare la numerazione automatica

    ciao
     
    da cosi'
    Sheets("foglio2").Select
     Call A_To_Z
    Application.ScreenUpdating = True
    Set valori = Nothing
    End Sub
    
    a cosi'
    Sheets("foglio2").Select
     Call A_To_Z
    ''righe da inserire
    For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row
      Cells(i, "F") = i - 1
    Next
    ''''''''''
    Application.ScreenUpdating = True
    Set valori = Nothing
    End Sub






  • di Fabry (utente non iscritto) data: 24/04/2015 13:57:49

    Gentile Mister,
    Si può assegnare nel foglio 1 un numero progressivo di fattura e la data che io scelgo nella (colonna I numero Fattura) e (colonna j Data fattura) con un codice VBA tenendo conto del cliente e della data della bolla (dal al) come indicato ne form inserito nel file che ti allego? Grazie

    Perchè vorrei prima assegnare un n. fattura e data alla bolla, e in seguito nel foglio 2 estrapolare un elenco univoco di nomi e numero e date fatture assegnate (sempre in vba)