Creazione tabella con macro

di Anonimizzato23862 il
11 risposte
Buongiorno a tutti!
Sono impantanata in un problema che fatico a risolvere....
Ho una tabella con riportato nella colonna A dei codici e nella colonna B i clienti che utilizzano tali codici. Tali codici si ripetono tante volte quanti sono i clienti che li utilizzano.
Quindi dovrei realizzare una tabella dove ad ogni codice mi ritrovo nelle colonne successive tutti i clienti che lo utilizzano.

Ho cercato di creare tale tabella utilizzando i subtotali, poi con la tabella pivot...ma niente di buono. Allora ho tentato di realizzare una macro, visto che deve essere fatto mensilmente mi è sembrata una soluzione ottimale...... Ma essendo autodidatta in materia di macro il risultato è stato penoso: la macro entrava in un ciclo a cui ponevo fine solo staccando la spina....

C'è qualcuno che mi può aiutare?
Grazie mille in anticipo
Buona giornata
Betty

11 Risposte

  • Ciao. I codici nella col A sono ordinati o mischiati? Se non lo sono hai la possibilità di ordinarli? Hai un num max nomi associabili a ciascun codice?
  • Ciao! I codici della colonna A sono alfanumerici ed ordinati.
    Al momento ad ogni codice può essere abbinato fino a un massimo di 5 clienti.
  • Ok. Allora potresti sfruttare la concatenazione di stringhe e il cerca verticale.
    1) crea una colonna per un progressivo numerico (da 1 a 5) da far associare a ciascun codice elencato... Quando cambia codice riparte da 1... Ti servirà la formula SE
    2) antepone alla colonna del codice una colonna da destinare alla concatenazione codice&progressivo
    3) in un altro foglio con cerca verticale, cerca il codice concatenato e fatti restituire il cliente nella posizione corrispondente... Prog1 prima colonna, e poi 2 colonna successiva ecc... Se non riesci vediamo come intervenire...
  • Ho seguito passo dopo passo le tue indicazioni e mi sono trovata completando con successo il punto 1e2. Poi ho creato il foglio2 dove ho impostato nella prima colonna il codice base su cui far perno nelle colonne successive col cerca verticale e li ho iniziato a perdermi.....

    Purtroppo non riesco a passarti una copia del file su cui ho lavorato ieri, mi trovo in vacanza e non ho con me il mio pc....
    Ci riproverò al mio rientro ma temo che dovrò chiederti un tuo intervento....
    Grazie mille per la tua disponibilità
    Buona giornata
  • NIENTE!!!!!
    Il passaggio 3 non riesco a farlo....creo una tabella identica a quella di partenza....


    Volevo allegare una estrapolazione della tabella... ma non riesco. L'estensione xls mi da errore.
  • Purtroppo non riesco a venirne a capo.
    Ho ristrutturato la tabella dove imputare il cerca verticale ma ho ottenuto una tabella dove: nella colonna A ho messo il cod&prog e nelle successive colonne, col cerca verticale mi sono fatta restituire il cliente. Così facendo la tabella risulta identica a quella d'origine
  • Se non alleghi il foglio con la macro (anche se sbagliata o incompleta) mi sa che non è semplice dirti dove sbagli.
  • Buongiorno a tutti
    Ma sbaglio o la Funzione CERCA.VERT per "funzionare" su altro Foglio necessita di un Nome definito?

    Ciao,
    Mario


    PS - No, sbaglio io. Ho fatto confusione con altra Funzione.
    Scusate l'errata intromissione.
    Ciao,
    Mario
  • gibra ha scritto:


    Se non alleghi il foglio con la macro (anche se sbagliata o incompleta) mi sa che non è semplice dirti dove sbagli.
    Buongiorno! Allegherei con piacere il file dove sto lavorando ma mi esce un messaggio in cui mi si dice che l'estensione .xls del file è errata.
    Ho cercato nel forum indicazioni in merito ma non le ho trovate.
    Se mi potesse dare indicazioni in merito, sarei ben felice di allegare il file.

    Buona giornata
  • Ciao a tutti.
    @Fenice76: prova a zippare il file prima di caricarlo.
    Comunque, se ho interpretato bene il quesito, ti servirebbe una macro simile a
    Sub TabellaElenco()
    Dim clCod As New Collection
    Dim rnTab As Range, cella As Range
    Dim R As Long, I As Long, J As Long, C As Long
        R = Range("A" & Rows.Count).End(xlUp).Row
        Set rnTab = Range("A1:A" & R)
        For I = 1 To R
            On Error Resume Next
            clCod.Add Range("A" & I).Value, CStr(Range("A" & I).Value) 'crea un elenco univoco dei codici
            On Error GoTo 0
        Next I
        For I = 1 To clCod.Count
            Cells(I, "F") = clCod(I)
            C = 7 'parte da col. G
            For J = 1 To R
                If Cells(J, 1) = clCod(I) Then
                    Cells(I, C) = Cells(J, 2)
                    C = C + 1
                End If
            Next J
        Next I
    End Sub
    In questa macro, viene prima creato (per mezzo di una collection) un elenco univoco che verrà riportato nella tabella risultante.
    Dopo, viene scorsa la collection e, per ogni elemento, si scorre la tabella d'origine e i corrispondenti valori vengono scritti nelle celle a destra.
    La macro lavora su una tabella nelle colonne A (codici) e B (clienti); i risultati vengono scritti a partire da col. F.
  • Purtroppo non riesco ad allegare la tabella...
    Di seguito riporto uno stralcio della tabella... ho ricopiato la macro ma sembra non funzionare si interrompe al primo passaggio... ho creato la tabella origine come di seguito riportato ma nulla....

    Codice Id. Enti
    BORABS00400100L1CO023 3208
    BORABS00400100L1CO023 888888
    BORABS00430050L2CO023 1925
    BORABS00430050L2CO023 888888
    BORABS00810050L1CO030 238
    BORABSB0070100E1CO015 888888
    BORABSB0110050B1CO027 2404
    BORABSB0110050E1CO023 247
    BORABSB0110050E1CO023 888888
    BORABSB0110050E1CO030 247
    BORABSB0110050E1CO035 247
    BORABSB0110050E1CO035 888888
    BORABSB0110050L1CO019 563
    BORABSB0110050L1CO019 888888
    BORABSB0110050L1CO023 888888
    BORABSB0110050L1CO030 139
    BORABSB0110050L1CO030 888888
    BORABSB0110100A1CO015 888888
Devi accedere o registrarti per scrivere nel forum
11 risposte