|
Rank: AiutAmico
Iscritto dal : 5/10/2010 Posts: 723
|
Salve, In questo TOPIC il preziosissimo aiuto di Giap (a10n11) mi ha permesso di risolvere un bel problema, legato al conteggio condizionale di dati presenti in due tabelle correlate. L’evoluzione di questa ricerca, che devo fare su una discreta quantità di dati, mi porta a strutturare il lavoro in più file che in ciascun Foglio di lavoro isolino il confronto tra ciascuna delle rispettive colonne delle 2 tabelle correlate… Per farmi capire senza troppi giri di parole che rischierebbero di non essere chiare ho preparato un esempio sintetico QUIil link presenta solo di un piccolo esempio sintetico, dato che le mie tabelle sono strutturate in modo più articolato (ad. es in col.A c’è un numero di rif.riga, in col.B c’è un codice di prodotto e le tabelle vere e proprie iniziano da col.C e non da col.A e terminano in col.AG) e sopra tutto hanno tantissime righe (sono circa 3000) in totale dovro’ preparare 130 tabelle dedicate, quindi 130 pagine (gulp!!). Penso che non ci sono altre possibilità se non quella di costruire una macro che strutturi meccanicamente il lavoro da fare, in fondo, è fatto solo su quelle 2 tabelle, magari scritte solo in Foglio1, al quale i 130 fogli delle tabelle si collegano incrementando di volta in volta i due parametri che condizionano il risultato: col.di tab.1 e col. di tab.2. Dati che sono spiegati nella Legenda che c'è a destra nel foglio-esempio. Una nota importante: anziché rendere visibile lo 0 (dato che sono molti e rendono la tabella assai dispersiva) vorrei lasciare la cella bianca, con una formula che scriva nella cella il valore solo se <>0. Tipo =SE(MATR.SOMMA.PRODOTTO(-(A3:A3500=1)*-(H3:H3550=3))<>0;MATR.SOMMA.PRODOTTO(-(A3:A3500=1)*-(H3:H3500=3));"") L'ho provata nel file-esempio e lavora correttamente. Grazie infinite per l'enorme disponibilità, buon pomeriggio eZio
|
|
|
|
|
Rank: AiutAmico
Iscritto dal : 5/29/2003 Posts: 1,694
|
salve il lavoro che ti prospetti ( fare 130 tabelle come quelle che mostri) equivale a mettersi una pistola alla tempia.! La soluzione che penso possa agevolare il lavoro è quello di ciclare le tabelle ed estrarre i dati comparati in tre colonne di appoggio sulle quali andarsi a costruire una bella tabella Pivot. Vedi il file che ti allego QUInel foglio 2 ho riportato le due tabelle. Il pulsante esegue la macro che si appoggia alle colonne Q:R:S per generare La tabella Pivot in un nuovo foglio. vedi se la soluzione ti aggrada. saluti Giap Immagine Parziale della Tabella Pivot
|
|
Rank: AiutAmico
Iscritto dal : 6/2/2005 Posts: 7,332
|
a10n11 ha una preparazione mostruosa e da anni aiuta senza tanto clamore. Mai sopra le righe. Mai sborone. E lui i problemi li risove, altri tromboni fanno solo sfoggio del loro sapere (sic!). Qualcuno dovrebbe imparare da lui. Me compreso. Bravo!!!
|
|
Rank: AiutAmico
Iscritto dal : 6/20/2008 Posts: 7,111
|
pidue ha scritto:a10n11 ha una preparazione mostruosa e da anni aiuta senza tanto clamore. Mai sopra le righe. Mai sborone. E lui i problemi li risove, altri tromboni fanno solo sfoggio del loro sapere (sic!). Qualcuno dovrebbe imparare da lui. Me compreso. Bravo!!! Perfettamente d'accordo. Ciao.
|
|
Rank: AiutAmico
Iscritto dal : 5/10/2010 Posts: 723
|
ecofive ha scritto:pidue ha scritto:a10n11 ha una preparazione mostruosa e da anni aiuta senza tanto clamore. Mai sopra le righe. Mai sborone. E lui i problemi li risove, altri tromboni fanno solo sfoggio del loro sapere (sic!). Qualcuno dovrebbe imparare da lui. Me compreso. Bravo!!! Perfettamente d'accordo. Ciao. ciao, Sono d'accordo in pieno con voi, compresa l'eccellente scelta dello strumento musicale suonato da qualche pseudo-guru... :D Questo forum, grazie a Giap ( a10n11), è per me come un faro e non passa giorno che non lo consulti con attenzione. Nel web non sono riuscito a trovare pari competenza, chiarezza, grande modestia (che è una virtù, e fa da cartina tornasole). Tornando al tema del topic, a10n11 ha scritto: vedi se la soluzione ti aggrada.
trovo la tua tabella semplicemente fantastica e di disarmante facile lettura. Non ho altre parole per poterla ben definire: in poche righe/colonne ci sono tutti i 130 Fogli da me (somaro in materia) prospettati. E in effetti avevo già pronta la pistola (ma molto vigliaccamente baravo: era scarica ahahahahah, ci tengo molto alla vita!). Due domande da perfetto ciuco: 1) nella tabella pivot che si genera nel Foglio4 premendo il pulsante di Foglio2, in col.A partendo da riga 5 c'è l'elenco dei numeri, ma ne mancano alcuni: ad es. in col.1 mancano 4-5-8-11-20-21-27-34-35-65-76-98 e manca la col.13 di tab.2 Sbaglio io qualcosa? 2) Quali sono i dati nelle macro che devo adattare alle mie tabelle reali? Se ti è più comodo (sopra tutto per brevità) segnalali pure direttamente in modo super sintetico passo-passo nei moduli del file... Un sincero ed infinito Grazie, buona serata eZio
|
|
Rank: AiutAmico
Iscritto dal : 5/29/2003 Posts: 1,694
|
aetio ha scritto: 1) nella tabella pivot che si genera nel Foglio4 premendo il pulsante di Foglio2, in col.A partendo da riga 5 c'è l'elenco dei numeri, ma ne mancano alcuni: ad es. in col.1 mancano 4-5-8-11-20-21-27-34-35-65-76-98. Sbaglio io qualcosa? 2) Quali sono i dati nelle macro che devo adattare alle mie tabelle reali? Se ti è più comodo (sopra tutto per brevità) segnalali pure direttamente in modo super sintetico passo-passo nei moduli del file... Un sincero ed infinito Grazie, buona serata eZio
salve 1) i numeri a cui fai riferimento(Tabella 1) , sono omessi nella Tabella Pivot perchè non hanno riferimenti di ricorrenza nella Tabella 2 . Fa sapere se sono io che non ho centrato il problema 2) Per poterti rispondere a questo dovrei sapere come è esattamente strutturato il tuo file Ora vista l'ora direi che posso anche chiudere bottega. Ci si sente domani. PS. Ti Ringrazio assieme a Eco e Pidue per le considerazioni fatte nei miei confronti. saluti Giap
|
|
Rank: AiutAmico
Iscritto dal : 6/2/2005 Posts: 7,332
|
a10n11 ha scritto: saluti Giap
tempo fa salutavi così: saluti andrea.
|
|
Rank: AiutAmico
Iscritto dal : 5/10/2010 Posts: 723
|
Ciao, a10n11 ha scritto: 1) i numeri a cui fai riferimento(Tabella 1) , sono omessi nella Tabella Pivot perchè non hanno riferimenti di ricorrenza nella Tabella 2 . Fa sapere se sono io che non ho centrato il problema
Ho provato a cercare di verificare alcune correlazioni tra le colonne delle 2 tabelle, usando la funzione Filtro automatico del menù Dati di Excel. Premetto che sono parimenti un grande appassionato di questo affascinante e assai complesso universo alfanumerico quanto un emerito somaro in questa materia specifica, in quanto non conoscendo ilo linguaggio VBA sono molto, ma molto, limitato nello sviluppare determinate funzioni che mi permettano di risolvere questi miei problemi legati alle tabelle, per cui le mie verifiche seguenti vanno “prese con le molle”. Filtrando il numero 20 di tab.1-col.1 (quindi 20 c’è in col.1 di tab.1) si riscontra in col.13 di tab.2 il valore 34 (quindi in tab. pivot di Foglio 4 dovrebbe essere presente anche la col.13) Filtrando il valore 87/ tab.1-col.2 (quindi 87 c’è in col.2 di tab.1) si riscontrano in col.9/ tab.2 per tre volte il valore 56 e una volta il.2 (quindi in tab. pivot di Foglio 4 in corrispondenza della col.2/ tab.1 dovrebbe essere presente anche la col.9). Si riscontrano anche in col.10/ tab.2 per tre volte il valore 45 e una volta il.2 (quindi in tab. pivot di Foglio 4 in corrispondenza della col.2/ tab.1 dovrebbe essere presente anche la col.10). a10n11 ha scritto: 2) Per poterti rispondere a questo dovrei sapere come è esattamente strutturato il tuo file
ECCOLO in sintesi. In col.A c'è un riferimento riga, in senso ZA (l'ultima riga della tabella è in realtà la 1, e la prima è l'ultima che s'incrementa di 1 ad ogni aggiornamento dei dati In col.B ci sono i codici interni, assegnati di volta in volta a seconda dell'appartenenza del prodotto. Da col.C a col.G è tab.1 e da col.H a col.AG è tab.2. Grazie assai, eZio
|
|
Rank: AiutAmico
Iscritto dal : 7/13/2010 Posts: 150
|
Bravo Giap, sei sempre disponibile, è vero e la tua competenza è tanta quanta tutti gli utenti del forum messi insieme :o) Bello il tuo Autoritratto, Ezio.
|
|
Rank: AiutAmico
Iscritto dal : 5/29/2003 Posts: 1,694
|
aetio ha scritto:Ciao,
Ho provato a cercare di verificare alcune correlazioni tra le colonne delle 2 tabelle, usando la funzione Filtro automatico del menù Dati di Excel. Premetto che sono parimenti un grande appassionato di questo affascinante e assai complesso universo alfanumerico quanto un emerito somaro in questa materia specifica, in quanto non conoscendo ilo linguaggio VBA sono molto, ma molto, limitato nello sviluppare determinate funzioni che mi permettano di risolvere questi miei problemi legati alle tabelle, per cui le mie verifiche seguenti vanno “prese con le molle”. Filtrando il numero 20 di tab.1-col.1 (quindi 20 c’è in col.1 di tab.1) si riscontra in col.13 di tab.2 il valore 34 (quindi in tab. pivot di Foglio 4 dovrebbe essere presente anche la col.13) Filtrando il valore 87/ tab.1-col.2 (quindi 87 c’è in col.2 di tab.1) si riscontrano in col.9/ tab.2 per tre volte il valore 56 e una volta il.2 (quindi in tab. pivot di Foglio 4 in corrispondenza della col.2/ tab.1 dovrebbe essere presente anche la col.9). Si riscontrano anche in col.10/ tab.2 per tre volte il valore 45 e una volta il.2 (quindi in tab. pivot di Foglio 4 in corrispondenza della col.2/ tab.1 dovrebbe essere presente anche la col.10).
Salve Forse c'è un fraintendimento. Io ho basato il mio ragionamento riprendendo la funzione suggerita in un post precedente che utilizzava la funzione Matr.somma.prodotto() e dietro questa ho creato il codice. Ora in base alla risposta che quoto, mi pare che il metodo da te richiesto sia completamente diverso. nell'immagine il tipo di elaborazione della macro: Per capire, mi serve un esempio di come devono essere passati i controlli tra le due tabelle. saluti Giap
|
|
Rank: AiutAmico
Iscritto dal : 5/29/2003 Posts: 1,694
|
pidue ha scritto:a10n11 ha scritto: saluti Giap
tempo fa salutavi così: saluti andrea. salve ho cambiato la firma uniformandola a quella che uso in altri posti dove mi firmo Giap per evitare commenti di questo tipo: ..Tutti sono bravi a copiare pari pari le risposte di a10n11... saluti Giap
|
|
Rank: AiutAmico
Iscritto dal : 5/10/2010 Posts: 723
|
a10n11 ha scritto:Per capire, mi serve un esempio di come devono essere passati i controlli tra le due tabelle. Ciao, In Foglio1 del file-esempio (presente anche nel tuo file con la tab.pivot) è molto sinteticamente spiegato, forse in modo ermetico, lo schema dei controlli tra le due colonne delle 2 tabelle. Le due tabelle nella realtà si riferiscono a dei componenti assemblati (tab.1) e ai pezzi che costituiscono quei componenti assemblati (tab.2). Per una più capillare organizzazione è necessario monitorare attentamente sia i componenti assemblati sia i pezzi che li costituiscono. In poche parole la domanda è: quante volte in una data colonna di tab.2 è presente il pezzo catalogato come 29 quando in una data colonna di tab.1 è presente il componente codice 105?Molto rozzamente, da perfetto mulo bergamasco dei bricchi, di volta in volta filtro il componente di una delle col. di tab.1 che m’interessa monitorare ( ad es. il cod.105 di col.3 di tab.1) e poi nella colonna di tab.2 che m’interessa in quel momento filtro a sua volta il cod.29 e vedo quante volte c'è: 0-1-2-3 ecc. volte Il mio esempio era impostato con le tabelle sviluppate in assi cartesiani con i dati di un num.col. di tab.1 in ordinate e i dati di un num.col. di tab.2 in ascisse: all’incrocio delle col. e riga di riferimento trovo in un attimo la cella col dato che m'interessa, dato che ho impostato la condizione che se il valore è 0 la cella rimane bianca. Nell’esempio le col erano 6 nella tab.1 e 8 nella tab.2 per un totale di 48 tabelle da redigere, ma nella realtà sono 5x26=130... un lavoro, come giustamente mi facevi notare tu, da suicida. :D Rimanendo nell’ambito dell’esempio del mio file l’impostazione della tabella relativa alla col.1 di tab.1 (nell’es. cella colorata di giallo e numero rosso) e alla col.1 di tab.2 (nell’es. cella bianca bordata con numero in blu) avrà: - in colonna (ordinate= valori di tab.1, crescenti in modo lineare da 1 all’ultimo valore presente in tab.1 col.1) [vedi esempio, in Foglio 1] =SE(MATR.SOMMA.PRODOTTO((A3:A100=1)*(G3:G100=1))<>0;MATR.SOMMA.PRODOTTO((A3:A100=1)*(G3:G100=1));"") =SE(MATR.SOMMA.PRODOTTO((A3:A100=2)*(G3:G100=1))<>0;MATR.SOMMA.PRODOTTO((A3:A100=2)*(G3:G100=1));"") =SE(MATR.SOMMA.PRODOTTO((A3:A100=3)*(G3:G100=1))<>0;MATR.SOMMA.PRODOTTO((A3:A100=3)*(G3:G100=1));"") =SE(MATR.SOMMA.PRODOTTO((A3:A100=4)*(G3:G100=1))<>0;MATR.SOMMA.PRODOTTO((A3:A100=4)*(G3:G100=1));"") etc. - in riga (ascisse= valori di tab.2, crescenti in modo lineare da 1 all’ultimo valore presente in tab.2 col.1) =SE(MATR.SOMMA.PRODOTTO((A3:A100=1)*(G3:G100=1))<>0;MATR.SOMMA.PRODOTTO((A3:A100=1)*(G3:G100=1));"")->la stessa vista sopra, perché è all’origine =SE(MATR.SOMMA.PRODOTTO((A3:A100=1)*(G3:G100=2))<>0;MATR.SOMMA.PRODOTTO((A3:A100=1)*(G3:G100=2));"") =SE(MATR.SOMMA.PRODOTTO((A3:A100=1)*(G3:G100=3))<>0;MATR.SOMMA.PRODOTTO((A3:A100=1)*(G3:G100=3));"") =SE(MATR.SOMMA.PRODOTTO((A3:A100=1)*(G3:G100=4))<>0;MATR.SOMMA.PRODOTTO((A3:A100=1)*(G3:G100=4));"") =SE(MATR.SOMMA.PRODOTTO((A3:A100=1)*(G3:G100=5))<>0;MATR.SOMMA.PRODOTTO((A3:A100=1)*(G3:G100=5));"") etc. si tratta quindi di inserire nelle celle in colonna e nelle celle in riga di una tabella una formula dallo stesso impianto, che in colonna (ordinate) incrementi di 1 i riferimenti alle celle di tab.1 e in riga (ascisse) i riferimenti alle celle di tab.2. Sicuramente, come hai fatto notare tu, una tabella pivot che raggruppi tutti i 130 fogli in uno è davvero il massimo!... ma lì bisogna essere dei fuoriclasse, non dei cipparoli come me........... ;)) Chiedo scusa per la mia rozzezza espositiva e spero di avere un poco chiarito la cosa Grazie assai e buona giornata eZio PS francesco240194 ha scritto:Bello il tuo Autoritratto, Ezio. Grazie! ;) a10n11 ha scritto:..Tutti sono bravi a copiare pari pari le risposte di a10n11... ... infatti, sono d'accordo. Se hai dovuto cambiare qualcosa hai sicuramente le TUE valide ragioni. ;) I più buffi però, secondo me, sono quelli che quando "s'incartano" non ti rispondo più'... lasciano il discorso sospeso per aria, né carne né pesce... boh?!? Il bello, se uno è davvero appassionato della materia come vuole fare credere, è arrivare alla soluzione del problema a costo di metterci un mese... come se in una partita a scacchi il concorrente che non sa proseguire chiede di potere andare in bagno un attimo e poi si dilegua... ahahahahahah.
|
|
Rank: AiutAmico
Iscritto dal : 5/29/2003 Posts: 1,694
|
salve ti chiedo conferma di quello che ho capito: In sostanza si tratta di verificare i componenti di un assieme tipo implosione di Distinta base? in base all'immagine si deve leggere: 27 assieme(col1 tabella1)- Componenti associati tutti i valori per colonna di tabella 2 Come in tutti i lavori, la parte più complessa è quella dell'analisi, per arrivare al risultato è necessario comprendere il problema. saluti Giap
|
|
Rank: AiutAmico
Iscritto dal : 5/29/2003 Posts: 1,694
|
salve questo che segue è il risultato di quello che ho capito: saluti Giap
|
|
Rank: AiutAmico
Iscritto dal : 5/10/2010 Posts: 723
|
a10n11 ha scritto: si deve leggere: 27 assieme(col1 tabella1)- Componenti associati tutti i valori per colonna di tabella 2
Ciao, Scusa se rispondo solo ora, ma mi sono dovuto assentare a causa del solito "imprevisto"... (a 'sto punto come si fa a chiamarli ancora imprevisti?... a mio avviso oggi gli "imprevisti" sono la routine, la normalità... scusate lo sfogo :D) - negativo. Si deve leggere: "per l'assieme codice 27 di colonna1 di tabella1 quanti pezzi codice 65 ci sono in colonna1 di tabella2?" Risultato= 1 Quindi: NON "Componenti associati TUTTI i valori per colonna di tabella 2", ma " UN COMPONENTE (quello che m'interessa monitorare in quel momento) di UNA colonna di tabella2" Ecco che allora prima filtro in col.1 di tab.1 il 27 e poi filtro e isolo anche il 65 dalla col.1 di tabella 2 , che se c'e devo- con le mie benedette :) tabelle- contare quante volte compare altrimenti se il risultato è 0 il campo rimane bianco. alcuni esempi: - riprendendo la tua foto di sopra, devo vedere quanti pezzi cod.65 di col.1 di tab.2 (in questa ricerca NON m'interessa il cod.21 che è pure in col.1 di tab.2 sotto al 65) ho nel componente associato cod.27 di col.1 di tab.1 (che non m'interessa contare... il conteggio dev'essere fatto nei dati della tab.2) prima isolo il 27 in col.1 di tab.1 poi anche il 65 di col.1 di tab.2 e mi restituisce 1 pezzo... nella mia tabella se non ce ne fossero la cella resterebbe bianca - devo sapere quanti pezzi cod.55 di col.5 di tab.2 ci sono per il cod.45 di col.4 di tab.1 (che non m'interessa contare... il conteggio dev'essere fatto nei dati della tab.2) prima isolo col filtro il cod.45 di col.4 di tab.1 poi isolo anche il cod.55 di col.5 di tab.2 mi restituisce 4 pezzi, nella tabella che voglio fare mi restituisce già subito il dato (4) senza dovere perdere tutto 'sto tempo... Grazie!! ;)) saluti eZio PS a10n11 ha scritto:Come in tutti i lavori, la parte più complessa è quella dell'analisi, per arrivare al risultato è necessario comprendere il problema.
Concordo in toto, e mi scuso se non sono sufficientemente chiaro nell'esposizione del problema... ;)
|
|
Rank: AiutAmico
Iscritto dal : 5/29/2003 Posts: 1,694
|
salve la spiegazione fornita conferma quanto avevo capito. Vedi il File e verificane l'esattezza. A scanso di svarioni dovrebbe essere corretto. saluti Giap
|
|
Rank: AiutAmico
Iscritto dal : 5/10/2010 Posts: 723
|
a10n11 ha scritto:salve la spiegazione fornita conferma quanto avevo capito. Vedi il File e verificane l'esattezza. A scanso di svarioni dovrebbe essere corretto. saluti Giap Ho un solo, lapidario commento da fare, che in una parola racchiude tutto ciò che si può dire di fronte a prodotti dell'ingegno come questo:... spettacolare!Se dovessi mettere in formula la tua bravura non avrei la minima esitazione nello scrivere: Giap : Universo Excel = Kairys : acrobazia aerea Non ho parole... Grazie infinite!!Vado a godermi il tuo gioiello con immensa gratitudine e ammirazione (spero di riuscire a ricambiare in qualche modo...) Ho un solo grande timore: come farà una nullità come il sottoscritto in fatto di VBA ad adattare la macro alle sue "benedette" tabelle? :D Ma sono convinto che ce la farò: sono in buone mani. Ciao e buona serata, eZio
|
|
Rank: AiutAmico
Iscritto dal : 5/29/2003 Posts: 1,694
|
salve grazie a te per il riscontro. Se leggi le poche righe di codice ti accorgerai che il lavoro era più semplice di quanto potesse apparire. Se trovi delle difficoltà ad integrare il suggerimento al tuo file originale chiedi pure. saluti Giap
|
|
Rank: AiutAmico
Iscritto dal : 5/10/2010 Posts: 723
|
Ciao, lanciando la macro "confronta_Tabelle2" nel file delle mie tabelle, dopo avere adattato i riferimenti in cui le macro devono lavorare, a un certo punto compare una finestra di "Errore di run-time '1004': Errore definito dall'applicazione o dall'oggetto"... andando a controllare nel Foglio2 noto che le colonne dedicate a Numero/Tab1/Tab2/Compon. sono arrivate all'ultima riga disponibile per excel: 65536 ho provato a modificare il file esempio aggiungendo parecchie righe, per rendere le tabelle simili alle mie e infatti anche nel file esempio la macro arriva a fondo foglio e presenta lo stesso errore... Se ti serve sapere quale riga della macro è evidenziata in giallo: 'Cells(riga, 37).Value = Cells(i, n).Value -> il 37 è il 17 del tuo es. Forse nella macro serve una riga che ordini di proseguire i conteggi su altre colonne adiacenti a quelle già scritte dalla macro (nel tuo es. Q-R-S-T, nel mio caso AK-AL-AM-AN) ? Guardando l'es. ci sono 14 colonne e 100 righe di dati che hanno prodotto 4705 righe di calcoli... le mie tabelle hanno 31 col. e quasi 5000 righe di dati, quindi penso che il problema sia proprio quello... probabilmente in Excel c'è un limite che dovrebbe essere "aggirato"...? Grazie e buona giornata, eZio
|
|
Guest |