|
Rank: AiutAmico
Iscritto dal : 5/10/2010 Posts: 723
|
Ciao, devo prima di tutto confessare che rimango esterrefatto dalle mille problematiche che si sviluppano intorno a tabelle apparentemente semplici. Ora ho un altro, ennesimo, quesito importante da risolvere: osservando l’immagine delle tabelle di esempio è stato filtrato in col.AF il cod.15 e come si può notare in col.T vi sono dei codici che nei vari registri risultavano assenti nei magazzini (le rispettive celle NON sono colorate). Ora, questa situazione si è evidenziata solo grazie al filtro casuale (durante una verifica random… in questo caso si dice “fortuna” ahahaha) sul codice monitorato, ma purtroppo è molto ben nascosta durante l’esame delle intere tabelle. Seguendo la via maestra, già percorsa con grande successo, dell’uso delle tabelle Pivot che scansionano le tabelle da cima a fondo è possibile risalire a quelle situazioni particolari, previa richiesta con InputBox del numero di righe (nell’esempio visto sopra sono 14) ?? Come ho già sottolineato più volte siamo nel campo dell’estremo stato dell’Arte, ma in questo Forum, penso si sia già capito, siamo... come dire, per rimanere in tema di Arte… all’Accademia di Brera. Ho preparato un piccolo FILE DI PROVA, che può essere utile a stabilire le coordinate in cui andranno ad agire le macro Grazie infinite e buona giornata eZio
|
|
|
|
|
Rank: AiutAmico
Iscritto dal : 5/29/2003 Posts: 1,694
|
salve a dire il vero non ho capito quasi nulla della richiesta. Fingere di spiegare le cose ad un bambino di 5 anni.. saluti Giap
|
|
Rank: AiutAmico
Iscritto dal : 5/10/2010 Posts: 723
|
Ciao, a10n11 ha scritto:salve Fingere di spiegare le cose ad un bambino di 5 anni.. :))) In pratica ci troviamo nella variante di un tema già visto, solo che io da brava cippa non riesco assolutamente a venirne fuori Allora: nell'esempio che ho caricato, in foglio1 ci sono le solite tabelle. Se filtro un codice in una colonna mi vengono restituite le tabelle filtrate. Guardando quelle tabelle filtrate con determinati codici (nel file-esempio il cod.6 di col.P, il cod.12 di col.K, il cod.57 di col.AC) si nota che in una delle altre colonne della tabella sono presenti un certo numero di celle, una sopra l'altra, NON colorate (nel file-esempio, con quelle appena sopra rispettivamente in col.Z sono 12, in col.R sono 10, in col.S sono 14). Notare anche col filtro in col.P/ cod. 6 le "cataste" delle col.I e col.AF!! Queste "cataste" di celle NON colorate sono l'obiettivo della mia attuale ricerca, dato che sono codici di componenti che NON erano presenti in magazzino nel momento in cui è stata compilata la riga di competenza. Ora, ad intuito, credo che la soluzione sia simile ad una già vista, ma con le dovute- importanti- "varianti": - macro che, da folgio1, confronta le colonne della tabella e costruisce le tabelle Pivot nel foglio TabPivot con il criterio: filtrami i codici di 1 colonna e rileva mediante un altro filtro non numerico, ma di colore (o meglio, di NON colore dato che le celle che c'interessano sono quelle NON colorate) quante sono (in altezza, nella medesima colonna) e dove sono le celle NON colorate "accatastate" - macro che, da foglio TabPivot, nasconde i subtotali nelle tabelle (già in mio possesso, devo solo adattarla alle esigenze) - macro che, da foglio TabPivot, scrive in apposita colonna i codici (già in mio possesso) - macro che, da foglio TabPivot, previa InputBox che chiede l'altezza della "catasta" restituisce in Foglio2 (che è una copia di Foglio1 con celle senza bordi né colori) i "responsabili" di quella situazione. Come si vede nell'immagine dell'esempio, il cod.6 di col.P e il cod.40 di col.Z, il cod.12 di col.K e il cod.66 di col.R, il cod.57 di col.AC e il cod.17 di col.S, in celle bordate con colore diverso, a seconda delle altezze delle "cataste". In realtà avremo un foglio per ogni altezza delle cataste, qui per comodità le ho raggruppate tutte in un foglio solo... Spero di non torturarti ancora con queste mie "benedette" tabelle :))) Grazie assai, buon pomeriggio eZio
|
|
Rank: AiutAmico
Iscritto dal : 5/29/2003 Posts: 1,694
|
salve la cosa che non ho capito è questa: tu vorresti che ogni colonna da H a AG venissero filtrate per ogni record di ciascuna colonna? es. se in colonna H fossero presenti 200 codici diversi, dovrebbe applicare il filtro per tutti i 200 codici da ripetersi per ogni colonna fino ad AG?? spero proprio che non sia questo il succo della domanda. saluti Giap
|
|
Rank: AiutAmico
Iscritto dal : 5/10/2010 Posts: 723
|
Ciao, chiedo scusa in anticipo se la mia richiesta risultasse pura utopia... ma purtroppo l'ignoranza spesso fa confondere "lucciole per lanterne"... Prendo spunto da questo 3d, in cui mi hai brillantemente risolto un grossissimo problema con solo qualche decina di righe di codici stupendi ... forse così sarà un poco più chiaro... La mia attuale richiesta anziché lavorare come nell'immagine sulle tabelle 1 (col.C:G) e 2 (col.H:AG) dovrebbe lavorare solo sulla tabella 2, col filtro per numero in una delle colonne (nell'immagine sotto in col.P) e col filtro per colore (anziché ancora per numero) in una delle altre colonne della tabella in base alla richiesta di evidenziare una determinata altezza delle "cataste", richiesta fatta tramite la InputBox (nell'immagine sotto in col.I catasta da 10, in col.Z catasta da 12, in col.AE catasta da 16). In Foglio2 (che è una copia del Foglio1 senza celle colorate e bordate) verrebbero evidenziate con bordatura colorata (diverso colore a seconda dell'altezza della catasta) le celle che soddisfano la richiesta del momento. In pratica la InputBox mi chiederebbe: "qual'è l'altezza delle cataste vuoi che ti scriva nel Foglio2?" Le celle bordate in Foglio 2 sarebbero quelle corrispondenti alla mia richiesta... (nell'immagine sotto relativa all'esempio ho il Foglio2 con il risultato della richiesta di evidenziare le cataste da 12...) Credo che il procedimento sia abbastanza simile a quello già visto in precedenza, con la variante che i 2 filtri anziché essere solo numerici sono 1 numerico e 1 per colore... Grazie infinite per la pazienza, buon pomeriggio eZio
|
|
Rank: AiutAmico
Iscritto dal : 5/29/2003 Posts: 1,694
|
salve 1) filtro la tabella 2 per un valore (un valore a caso tra quelli presenti in una colonna??) 2) dal risultato del filtro analizzo quante celle consecutive per colonna non hanno colore in base all'ampiezza definita da una inputbox 3) Qui buio pesto: Commenta: n Foglio2 (che è una copia del Foglio1 senza celle colorate e bordate) verrebbero evidenziate con bordatura colorata (diverso colore a seconda dell'altezza della catasta) le celle che soddisfano la richiesta del momento.
In pratica la InputBox mi chiederebbe: "qual'è l'altezza delle cataste vuoi che ti scriva nel Foglio2?" Le celle bordate in Foglio 2 sarebbero quelle corrispondenti alla mia richiesta... (nell'immagine sotto relativa all'esempio ho il Foglio2 con il risultato della richiesta di evidenziare le cataste da 12...)
se guardo l'esempio che hai postato, vedo che la colonna Z soddisfa la ricerca per 12 ricorrenze, nel foglio 2 trovo valori evidenziati che non riesco ad associare a nulla. es. il 43 in E20 da dove spunta fuori? il 17 in S14 altrettanto. senza usare immagini che non aiutano, spiega semplicemente, i 12 valori risultanti dal filtro di colonna Z come vanno trattati? qual'è il meccanismo di trasposizione nel foglio2 saluti Giap
|
|
Rank: AiutAmico
Iscritto dal : 5/10/2010 Posts: 723
|
Ciao, chiedo scusa per il pasticciaccio dell'ultima immagine; appena riesco riordinerò per bene questo 3d piuttosto confuso, postando immagini più chiare... ;)) [::ESEGUITO::]Mi spiace molto di non riuscire a farmi capire in poche parole, col risultato di tenerti impegnato in questo malo modo... scusami tanto. In pratica: -In Foglio1 ho la mia tabella (col.H:AG) da processare, con tutti i codici -In Foglio2 ho la copia esatta della tabella, però senza bordi né colori nelle celle. E' il foglio in cui le macro scriveranno i risultati della loro ricerca, comandata dalla InputBox -Ciò che mi serve è evidenziare in Foglio2 quali e dove sono le situazioni in cui si verificano le ricorrenze (il cui numero è fornito via InputBox) di celle non colorate quando in una delle altre colonne della tabella è stato filtrato uno dei codici. Nella situazione dell'esempio le macro hanno trovato che, alla mia richiesta via InputBox di trovare le 12 ricorrenze, ne hanno trovata una in riga 6 di col.Z (cod.40) quando è stato filtrato il cod.6 di col.P. La situazione viene quindi segnalata in Foglio2 mediante bordatura delle relative celle col colore blu (o altro colore a piacimento...). Ovviamente nella realtà in Foglio2 vi saranno più celle bordate rispetto all'esempio, che si riferiscono tutte a situazioni di 12 ricorrenze rilevate in Foglio1 (o in un foglio TabPivot) dalle macro. Grazie assai, scusa ancora e buona serata eZio Nota: Code:es. se in colonna H fossero presenti 200 codici diversi, dovrebbe applicare il filtro per tutti i 200 codici da ripetersi per ogni colonna fino ad AG?? è stata fatta una selezione, e i codici da processare (quelli più importanti) sono circa un centinaio... Code:senza usare immagini che non aiutano, spiega semplicemente, i 12 valori risultanti dal filtro di colonna Z come vanno trattati? qual'è il meccanismo di trasposizione nel foglio2 quello che mi interessa è che in Foglio2 vengano segnalati i responsabili di questa situazione (12 ricorrenze di celle bianche in una colonna della tabella quando in un'altra colonna viene filtrato un codice), nel caso dell'esempio il cod.4 di col.P e il cod.40 di col. Z. Nella realtà avremo situazioni molto simili a quella dell'immagine di apertura del 3d... in cui, ad esempio, in col.T si hanno 14 ricorrenze quando in col.AF è stato filtrato il cod.15... che dopo la mia richiesta tramite InputBox-valore digitato 14) verranno segnalati dalle macro in Foglio2, nella tabella sbiancata in corrispondenza della riga del sett.73'52, con bordatura delle celle cod.74-col.T e cod.15-col.AF. Le macro evidenzieranno tutte le ricorrenze di altezza 14 rilevate in tabella e le segnaleranno in Foglio2. Quando vorro' rilevare le ricorrenze di altra altezza (ad es.16) toglierò bordi e colori dal Foglio2, e dall'apposito foglio (forse il TabPivot) avvierò una nuova ricerca tramite Inputbox-valore digitato 16 Spero tanto di avere chiarito un pò meglio il problema...
|
|
Rank: AiutAmico
Iscritto dal : 5/29/2003 Posts: 1,694
|
salve sperando di aver capito il tutto, mi serve solo sapere come deve comportarsi la macro in una situazione come quella che segue: Dichiaro il limite di consecutività a 10 segnalo solo quelli che raggiungono questo limite oppure anche quelli che sono maggiori di 10? saluti Giap
|
|
Rank: AiutAmico
Iscritto dal : 5/10/2010 Posts: 723
|
Ciao, a10n11 ha scritto:salve sperando di aver capito il tutto, mi serve solo sapere come deve comportarsi la macro in una situazione come quella che segue:
Dichiaro il limite di consecutività a 10 segnalo solo quelli che raggiungono questo limite oppure anche quelli che sono maggiori di 10? saluti Giap se la cosa ti facilita il tutto, và benissimo segnalare anche quelli maggiori... poi mi arrangio io di volta in volta a lavorare sui "minimi"... è già un immenso aiuto potere isolare quelli che rispondono ai requisiti minimi!! :))) Non so proprio come ringraziarti, sei davvero encomiabile!! buona giornata eZio
|
|
Rank: AiutAmico
Iscritto dal : 5/29/2003 Posts: 1,694
|
salve decidendo autonomamente di selezionare solo le "Cataste" che corrispondono in maniera precisa al valore assegnato dalla inputbox, quelle che seguono sono le macro: Option Base 1 Public Cl As Variant Public sequenza As Long Public myarr() As Variant Sub TabellaTabelle() With Sheets("foglio2") .Cells.Interior.ColorIndex = xlNone .Cells.Borders.LineStyle = xlNone End With sequenza = CLng(InputBox("SEQUENZA", "Dichiara limite sequenza")) conta = 0 uriga = Range("A" & Rows.Count).End(xlUp).Row For i = 8 To 33 Set area = Range(Cells(3, i), Cells(uriga, i)).SpecialCells(xlCellTypeVisible) If area.Cells.Count > sequenza Then For Each Cl In area If Cl.Interior.ColorIndex = xlNone Then conta = conta + 1 ReDim Preserve myarr(conta) myarr(conta) = Cl.Row Else If conta = sequenza Then Call copiaDati conta = 0 Erase myarr End If conta = 0 Erase myarr End If Next End If conta = 0 Next End Sub Sub copiaDati() colonna = Cl.Column For a = 1 To UBound(myarr) With Sheets("foglio2") With .Cells(myarr(a), colonna).Borders .LineStyle = xlContinuous .Weight = xlMedium .ColorIndex = 3 End With End With Next End Sub saluti Giap
|
|
Rank: AiutAmico
Iscritto dal : 5/10/2010 Posts: 723
|
Ciao, Un doveroso e immenso Grazie!! Corro subito a provarle... ;)) Buona giornata eZio
ps. so già come mi godrò la Domenica: ammirando le tue meravigliose creature!! :)))
|
|
Rank: AiutAmico
Iscritto dal : 5/10/2010 Posts: 723
|
Ciao, ho provato le macro nel file-prova, ma il risultato è per ricorrenze 10 e per ricorrenze 11 Non capisco come le macro li rilevino Grazie, eZio
|
|
Rank: AiutAmico
Iscritto dal : 5/29/2003 Posts: 1,694
|
salve le macro lavorano in questo modo con queste condizioni: Dopo aver applicato un filtro sulla tabella 2, la macro chiede quante ricorrenze vuoi osservare. inizia a scansionare ogni colonna della tabella 2, controlla se ci sono occorenze consecutive di celle non colorate memorizza l'indirizzo di cella in un array. Quando il numero di celle bianche è uguale al valore della Inputbox, Applica il bordo alle celle estratte nel foglio2. Come dal file di prova, assegnando alla Inputbox il valore di 11 non borderà nulla perchè non esiste alcuna ricorrenza esatta. almeno per il file che hai postato. saluti Giap
|
|
Rank: AiutAmico
Iscritto dal : 5/29/2003 Posts: 1,694
|
salve immagine del foglio1 del file prova filtrato per il valore 6 di colonna P Risultato ottenuto in Foglio2 con valore assegnato dalla InputBux (10) saluti Giap
|
|
Rank: AiutAmico
Iscritto dal : 5/10/2010 Posts: 723
|
Ciao, chiarissimo!! ...sono ptoprio un tortellino ahahahGuardando l'immagine che hai postato noto che purtroppo non è questo che risolve il mio problema: le situazioni che eisolvono il mio problema sono nella tabella filtrata: 6 in col.H e 89 in col.I in foglio2 nella riga di loro competenza si vedranno le loro celle e quella del 6 di col.P bordate di rosso Parimenti, supponendo di assegnare con la InputBox un valore di 12, le macro filtreranno in foglio1 e troveranno e segnaleranno in foglio2 (insieme a tutte le altre ricorrenze 12 trovate dal filtro) perché in quella circostanza si è verificata una ricorrenza, dovuta al cod.6 di col.P (filtrato) e al cod.40 di col.Z Scusa in anticipo per la sicura castroneria: è possibile tramite le "solite" e preziosissime tabelle pivot far fare alle macro il lavoro di filtro? il grosso del lavoro manuale, un limite pressoché invalicabile per ovvii motivi di tempo, è proprio l'andare a ricercare quelle particolari situazioni che invece verrebbero evidenziate abbastanza velocemente dalle macro... Grazie assai e buon pomeriggio Grazie...!!eZio
|
|
Rank: AiutAmico
Iscritto dal : 5/29/2003 Posts: 1,694
|
aetio ha scritto:Ciao, chiarissimo!! ...sono ptoprio un tortellino ahahah
Guardando l'immagine che hai postato noto che purtroppo non è questo che risolve il mio problema: le situazioni che eisolvono il mio problema sono nella tabella filtrata: 6 in col.H e 89 in col.I in foglio2 nella riga di loro competenza si vedranno le loro celle e quella del 6 di col.P bordate di rosso
salve sicuramente alla fine riusciremo a ragionare sulla stessa lunghezza d'onda. Per ora non ho ancora capito il meccanismo. Una volta trovate le ricorrenze cercate, come dal mio esempio postato, nel foglio due devono essere evidenziate tutti i valori della catasta trovata o no?? prova a farmi capire utilizzando l'immagine che ho postato come dovrebbe essere il risultato finale. Commenta: Scusa in anticipo per la sicura castroneria: è possibile tramite le "solite" e preziosissime tabelle pivot far fare alle macro il lavoro di filtro?
certo che è possibile applicare i filtri via macro (non vedo la necessità di yabelle pivot) basta sapere come dove quali criteri utilizzare. saluti Giap
|
|
Rank: AiutAmico
Iscritto dal : 5/10/2010 Posts: 723
|
a10n11 ha scritto: sicuramente alla fine riusciremo a ragionare sulla stessa lunghezza d'onda
...ne sono certo: mi hai risolto dei problemi 1000 volte più complessi :)) figuriamoci se questa cosa non la risolverai con una macro di una manciata di righe... sono io che non riesco a metterti a fuoco il problema, e ti chiedo nuovamente scusa... Cerco di spiegare con altre parole... -in foglio1 ho la tabella, in foglio 2 la stessa tabella senza celle colorate e bordate -devo mettere in evidenza (in foglio2) quando, posto il filtro sui codici in foglio1 (uno alla volta), nella tabella filtrata compaiono nelle altre colonne della tabella le ricorrenze di una certa altezza... che vengono segnalate in foglio2 colorando i "responsabili" di queste ricorrenze... cioè il codice filtrato e l'altro codice ( o gli altri codici, se nella riga vi sono altre ricorrenze di pari altezza di quella ricercata) che sta in testa alla catasta delle ricorrenze, in base alla richiesta data alla InputBox In pratica guardando il foglio2 dopo aver chiesto via InputBox le cataste da 10 dovrei vedere bordate con colore tutte le celle che hanno soddisfatto la mia ricerca... Penso che l'inghippo sia nascosto tutto qui: Code:le macro lavorano in questo modo con queste condizioni: Dopo aver applicato un filtro sulla tabella 2, la macro chiede quante ricorrenze vuoi osservare. inizia a scansionare ogni colonna della tabella 2, controlla se ci sono occorenze consecutive di celle non colorate memorizza l'indirizzo di cella in un array. Quando il numero di celle bianche è uguale al valore della Inputbox, Applica il bordo alle celle estratte nel foglio2. "Dopo aver applicato un filtro sulla tabella 2" > Negativo: Il filtro in foglio1 sulla tabella 2 lo deve applicare la macro per ciascuno dei circa 100 codici e deve restituire in foglio2, come ho già scritto sopra, i responsabili: il codice filtrato e l'altro codice che sta in testa alla catasta delle ricorrenze, in base alla richiesta data alla InputBox. Ecco perché penso, in base ai casi già visti, che ci sia bisogno di tabelle pivot: in una colonna tutti i codici filtrati, in un'altra colonna tutti i codici, nelle altre colonne (quelle della tabella) i numeri delle altezze delle ricorrenze.. la macro poi in base alla richiesta via InputBox isolerà in foglio2 tutte quelle che c'interessano, bordando le celle dei responsabili con un colore diverso a seconda dell'altezza... Grazie assai e buona serata, eZio
|
|
Rank: AiutAmico
Iscritto dal : 5/29/2003 Posts: 1,694
|
salve Bisogna che tu risponda alle mie domande. Ripeto più dettagliatamente basandomi sulle due immagini che ho postato. In colonna P ho applicato il filtro per il valore 6 con ricerca di cataste da 10. Si trovano corrispondenze in colonna H e colonna I con questi valori: H: 6 - 4 - 2 - 53 - 16 - 60 - 185 - 36 - 61 - 82 I: 89 - 74 - 54 - 1 - 47 - 77 - 19 -73 - 35 - 46 ora stante questa situazione, in foglio 2 su quali di questi valori vanno applicati i bordi? saluti Giap
|
|
Rank: AiutAmico
Iscritto dal : 5/10/2010 Posts: 723
|
Ciao, H:6 I:89 P:6 (il cod. che ha generato il tutto) Grazie per la somma pazienza!! e buona giornata, eZio
|
|
Guest |