Risultati da 1 a 9 di 9

Discussione: Funzioni di riepilogo tramite macro



  1. #1
    L'avatar di Luigi Traversetti
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Macerata
    Età
    43
    Messaggi
    18
    Versione Office
    Excel 2010
    Likes ricevuti
    2
    Likes dati
    13

    Funzioni di riepilogo tramite macro

    Ciao a tutti,
    provo ad esporvi il mio problema.
    Dal gestionale dell'azienda estraggo un file ".csv" contenente gli ordini disposti dai clienti.
    L'elaborazione che devo eseguire su tale file consiste nell' "incrociare" i diversi dati al fine di ottenere un riepilogo dei totali. Gli "incroci" che devo effettuare sono in totale 36, ed ognuno dei 36 incroci deve produrre 5 diversi totali.
    Finora, per ottere il riepilogo, operavo in questo modo:
    - importavo i dati in un foglio excel,
    - creavo una tabella pivot,
    - spostavo i vari elementi della pivot in base all' "incrocio" di volta in volta necessario,
    - scrivevo (copia+incolla) il totale risultante dalla pivot in un secondo file excel contenente il riepilogo dei totali.
    Quello che vorrei chiedervi, se possibile, è una macro che possa automatizzare la compilazione del riepilogo dei totali.
    Non chiedo un codice per tutti i 36 "incroci", ma solamente per 3: quelli che mi sembrano più complicati e che penso possano rappresentare le diverse combinazioni presenti nei restanti "incroci". Poi crecherò di "interpretare" il vostro codice per copiarlo ed adattarlo a tutte le altre combinazioni.
    Mi rendo conto che anche in questo modo sto chiedendo molto, probabilmente troppo. Se così fosse, ignorate pure la mia richiesta, io vi ringrazio ugualmente (non fosse altro che per aver letto fin qui).


    In caso contrario, vi espongo in dettaglio quello di cui ho bisogno.
    Nel file "test.zip" (http://dropcanvas.com/5hure) trovate: "document.csv", "document_senza spazi.xls" e "Report.xls".
    Il file "document.csv" (estratto dal gestionale) contiene l'elenco degli ordini (righe), con i valori dei diversi elementi (colonne) identificativi degli stessi.
    Il file "document_senza spazi.xls", se può essere utile, lo ho elaborato in quanto il gestionale compila alcuni campi aggiungendo al valore presente un determinato numero di spazi (che ho annullato).
    Il file "Report.xls" contiene il riepilogo dei dati.

    I 3 diversi "incroci" di cui avrei bisogno sono:


    1) Totale univoco dei clienti che hanno disposto ordini (se un cliente ha disposto 5 ordini, comunque conta per 1): lo ottengo contando i record univoci presenti nella colonna C [ORDINANTE]. Il valore risultante da questa elaborazione andrà scritto nella cella "C6" del "Foglio1" del file "Report.xls".


    2) Totale (NON univoco) degli ordini che presentano CONTEMPORANEAMENTE le seguenti condizioni:
    -- la colonna O [CON] è valorizzata con "S Si" (il gestionale estrae un campo con 32 caratteri),
    -- la colonna Q [APP] è valorizzata con "N No" (32 caratteri),
    -- la colonna R [ADE] è valorizzata con "N No" (32 caratteri),
    -- la colonna S [INI] è valorizzata con "C" (24 caratteri).
    Tale elaborazione (mi dispiace) deve essere ripetuta per 5 volte, cioè per ognuno dei possibili valori contenuti nella colonna G [Status ordine], che possono essere:
    ---- Annullato (17 caratteri). Il valore risultante da questa elaborazione andrà scritto nella cella "C26" del "Foglio1" del file "Report.xls",
    ---- Eseguito (17 caratteri). Nella cella "D26",
    ---- Frazionato (17 caratteri). Nella cella "E26",
    ---- Non eseguito (17 caratteri). Nella cella "F26",
    ---- Revocato (17 caratteri). Nella cella "G26".


    3) Totale, inteso come sommatoria di tutti i valori presenti nella colonna AJ [Controvalore ordine].
    Anche tale elaborazione dovrà essere eseguita per ognuno dei possibili valori contenuti nella colonna G [Status ordine]:
    ---- Annullato (17 caratteri). Nella cella "C119" del "Foglio1" del file "Report.xls",
    ---- Eseguito (17 caratteri). Nella cella "D119",
    ---- Frazionato (17 caratteri). Nella cella "E119",
    ---- Non eseguito (17 caratteri). Nella cella "F119",
    ---- Revocato (17 caratteri). Nella cella "G119".


    Ripeto nuovamente che sono consapevole di chiedere troppo. Spero che, anche se non risponderete a questa richiesta, continuerete ad accettarmi in questo forum ed ad accogliere eventuali future richieste (spero meno elaborate).


    Grazie a tutti.

  2. #2
    L'avatar di Marius44
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Catania
    Età
    73
    Messaggi
    3222
    Versione Office
    Excel2010
    Likes ricevuti
    627
    Likes dati
    155
    Buongiorno Luigi
    Ho scaricato il tuo file e, con mia grande sorpresa, l'ho trovato "pulito" cioè senza alcuna macro e=o formula che rappresentasse un tuo tentativo. Ma fino ad ora come fai? Non credo che gli incroci li fai a"ad occhio".
    Sarebbe interessante "vedere" la tua macro (se c'è) oppure le tue formule.
    Scusa, ma come hai postato il problema mi sembra tanto chiedere la "pappa pronta". Non adombrarti per quanto detto, è una mia impressione e l'ho esternata. Sta a te smentirmi.

    Non sono un esperto di formule ma credo che il tuo problema, sebbene MOLTO complesso, sia risolvibile sia con le formule sia con VBA.
    Ciao,
    Mario

  3. #3
    L'avatar di Textomb
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Catania
    Età
    47
    Messaggi
    171
    Versione Office
    Excel 2016
    Likes ricevuti
    93
    Likes dati
    11
    concordo quanto espresso da Mario (ciao)
    confermo che il tuo problema è risolvibile sia con formule che (ovviamente) anche con VBA.
    per darti un aiuto, ti dico che il file senza spazi non ha senso. Lo puoi evitare. Puoi utilizzare il file CSV generato dal gestionale. Anzi è molto pulito. Ne ho visti di peggiori.
    Per trovare il numero univoco degli ordini da inserire nella cella C6 del Report puoi usare tante formule. Una è questa:

    =MATR.SOMMA.PRODOTTO(--(CONFRONTA(document!C2:C581;document!C2:C581;0)=(RIF.RIGA(document!C2:C581)-1)))

    Il risultato che mi è uscito è 342 sulla base del tuo file di esempio...
    Andando invece sulla cella C10 del Report puoi inserire una formula di questo tipo.

    =MATR.SOMMA.PRODOTTO((ANNULLA.SPAZI(document!$G$2:$G$581)=Report!C9)*(ANNULLA.SPAZI(document!$O$2:$O$581)="S Si")*(ANNULLA.SPAZI(document!$Q$2:$Q$581)="N No")*(ANNULLA.SPAZI(document!$R$2:$R$581)="N No")*(ANNULLA.SPAZI(document!$S$2:$S$581)="C"))


    Poi trascini a destra e trovi gli altri valori : Annullato, Eseguito, Frazionato, ecc...
    Gli altri valori del Report sono tutti desumibili da questa formula.
    Come vedi ho utilizzato ANNULLA.SPAZI che, di fatto, elimina la necessità di ricorrere al file senza spazi...

  4. #4
    L'avatar di Luigi Traversetti
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Macerata
    Età
    43
    Messaggi
    18
    Versione Office
    Excel 2010
    Likes ricevuti
    2
    Likes dati
    13
    Ciao Mario,
    mi dispiace (e mi scuso sinceramente con te e con tutti gli altri utenti) che il mio post ti sia sembrato un "chiedere la "pappa pronta"".
    Non era assolutamente mia intenzione chiedere un "pacchetto chiavi in mano", speravo di averlo chiarito con quanto scritto. Una piccola parte del problema penso sia proprio lì: ho scritto troppo e, forse, qualcosa nella lettura si è perso.
    In effetti il mio file è pulito, non ci sono formule e neanche macro: non sono capace di scriverle, ne avevo richieste 3 per vedere se riuscivo a copiarle e ad adattarle agli altri "incroci" (quasi sicuramente non ci sarei riuscito).
    Gli incroci non li faccio "ad occhio", ma "a mano": creo una tabella pivot e muovo i vari elementi per ottenere il totale che di volta in volta mi serve (poi quel totale lo copio/incollo - a mano - nel file del riepilogo).
    Sinceramente non avevo intenzione di approfittarmi della vostra disponibilità e neanche di prendervi in giro. Quello che si è perso nella lettura è proprio questo: nella parte iniziale della mia richiesta avevo scritto chiaramente il modo in cui faccio gli incroci.
    Purtroppo ho un livello di conoscenza di excel troppo basso. Oggi ho imparato che di questo devo tenere conto, in futuro, per non fare richieste fuori luogo.
    Spero che tu non intenda quanto ho scritto come una polemica. Assolutamente non è mia intenzione.
    Mi hai comunque dedicato un po' di tempo e per questo ti ringrazio,
    un saluto.

  5. #5
    L'avatar di Luigi Traversetti
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Macerata
    Età
    43
    Messaggi
    18
    Versione Office
    Excel 2010
    Likes ricevuti
    2
    Likes dati
    13
    Ciao Textomb,
    per il fatto che concordi con quanto espresso da Mario mi spiace e me ne scuso.
    Se ti interessa, puoi leggere quanto ho scritto nel post #4.


    Per le formule ti ringrazio moltissimo.
    La seconda sono riuscito ad adattarla agli altri incroci dello stesso genere.
    La prima (che, ovviamente, fornisce il corretto numero univoco di ordini), purtroppo, ancora non sono riuscito ad adattarla ad un altro "incrocio": però va bene così, non mi posso permettere di chiedere altro.
    Grazie di nuovo,
    un saluto

  6. #6
    L'avatar di Textomb
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Catania
    Età
    47
    Messaggi
    171
    Versione Office
    Excel 2016
    Likes ricevuti
    93
    Likes dati
    11
    Luigi non devi risentirti se abbiamo manifestato una critica alla tua richiesta. Sinceramente, anche io come Mario, ho pensato volessi un prodotto finito senza metterci nulla di tuo.
    In ogni caso, se hai bisogno di altri suggerimenti sul tuo file, oltre a quelle che ti ho già fornito, puoi sempre chiederli. Non è detto che riceverai risposte. Tu però non ti escludere la possibilità di riceverli.
    Quale sarebbe l'altro "incrocio" su cui non sei riuscito ad adattare la formula?

  7. #7
    L'avatar di Marius44
    Clicca e Apri
    Data Registrazione
    Sep 2015
    Località
    Catania
    Età
    73
    Messaggi
    3222
    Versione Office
    Excel2010
    Likes ricevuti
    627
    Likes dati
    155
    Ciao Luigi
    scusami se ti sono sembrato troppo brusco. Non era nelle mie intenzioni.
    In un Forum ci si va per due motivi:
    per imparare, se hai interesse ad apprendere
    per dare altri quello che sai
    Se questi due punti non si incontrano è inutile postare domande.
    Rispondi a Textomb (ciao Alberto) e vediamo quale è quest'altro incrocio.

    Ciao,
    Mario

  8. #8
    L'avatar di Luigi Traversetti
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Macerata
    Età
    43
    Messaggi
    18
    Versione Office
    Excel 2010
    Likes ricevuti
    2
    Likes dati
    13
    Ciao Textomb,
    grazie per la disponibilità.
    La prima formula che mi hai proposto:


    =MATR.SOMMA.PRODOTTO(--(CONFRONTA(document!C2:C581;document!C2:C581;0)=(RIF.RIGA(document!C2:C581)-1)))


    mi restituisce correttamente il numero UNIVOCO dei clienti che hanno disposto un ordine.
    Io sto cercando di adattarla in modo che mi restituisca il numero univoco dei clienti [colonna C] che hanno disposto un ordine per il quale in due diverse colonne sono presenti determinati valori.


    Con "Valuta formula" penso di aver QUASI capito la tua seconda formula: per ogni cella di ciascun intervallo controlla se la condizione richiesta si verifica e, in caso positivo, assegna il valore 1, altrimenti 0; quindi moltiplica, per riga, i valori presenti in ogni riga (nel caso di tre diversi intervalli da analizzare: 0*0*1; 1*0*1, 1*1*1 ....) infine effettua la somma della "colonna" contenente il prodotto delle moltiplicazioni di ciascuna riga.


    E' più di un'ora che provo, ma ancora non sono riuscito a capire la prima formula.
    Per stasera smetto, però vorrei prendermi ancora un po' di tempo per vedere se riesco a capirci qualcosa. Sicuramente non ci riuscirò, quindi prima o poi mi darò per vinto e, se posso, ti chiederò di aiutarmi con la formula che mi manca.
    Che, in realtà, è l'ultima prima di completare il report: dei 36 "incroci", gli altri li ho completati tutti con le tue formule.
    Quindi mi hai già aiutato moltissimo (lo ammetto sinceramente: anche se non era mia intenzione, praticamente è come se mi avessi dato il prodotto finito).
    Grazie di nuovo.
    ciao

  9. #9
    L'avatar di Luigi Traversetti
    Clicca e Apri
    Data Registrazione
    Oct 2015
    Località
    Macerata
    Età
    43
    Messaggi
    18
    Versione Office
    Excel 2010
    Likes ricevuti
    2
    Likes dati
    13
    Ciao Mario,
    non ti scusare: a conti fatti avevi ragione, come ho scritto a Textomb, praticamente ho ricevuto un prodotto finito.
    Io nel Forum, sicuramente, ci vengo per imparare: il limite è nella mia capacità di farlo.
    Però penso che, purtroppo, non riuscirò a "ripagare" la vostra disponibilità con quello che so.
    Grazie per avermi scritto.
    ciao

Discussioni Simili

  1. Non funzionano le macro tramite pulsanti
    Di Ab_Fab nel forum Domande su Excel VBA e MACRO
    Risposte: 3
    Ultimo Messaggio: 12/12/16, 10:12
  2. [Risolto] Traduttore automatico tramite macro
    Di Trial4life nel forum Domande su Excel VBA e MACRO
    Risposte: 19
    Ultimo Messaggio: 04/12/16, 17:22
  3. Filtrare una tabella tramite macro 3
    Di Vincenzo Damiani nel forum Domande su Excel VBA e MACRO
    Risposte: 21
    Ultimo Messaggio: 28/08/16, 14:35
  4. Archiviazione dati tramite macro
    Di bopo57 nel forum Domande su Excel VBA e MACRO
    Risposte: 10
    Ultimo Messaggio: 22/08/16, 12:21
  5. Funzioni Macro di Microsoft Excel 4.0
    Di cromagno nel forum Domande su Excel in generale
    Risposte: 5
    Ultimo Messaggio: 09/04/16, 19:37

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •