› Excel e gli applicativi Microsoft Office › Confronto celle
-
AutoreArticoli
-
Ciao a tutti!
Ho un file Excel con due fogli.
Ho applicato una FC nel primo foglio in modo che ogni cella di ogni riga di questo foglio sia confrontata con una qualunque cella della medesima riga (ovvero stesso giorno del mese) del secondo foglio. Se il contenuto non è lo stesso, la cella si deve colorare, più precisamente:
- colorarsi del tutto se manca completamente l'alimento;
- evidenziare solo il contorno cella se è parzialmente presente.Nel terzo foglio il risultato che vorrei raggiungere.
Suggerimenti?
Grazie!La formula funziona bene ma non benissimo, nel senso che se il contenuto della cella è esattamente lo stesso
Allegati:
You must be logged in to view attached files.nel senso che se il contenuto della cella è esattamente lo stesso
Ti prego finisci la frase! Ci hai lasciati in sospeso 😀
Comunque non trovo formattazioni condizionali nel foglio.
Forse hai allegato un file diverso.
Però non mi è chiaro come si arriva alla compilazione della tabella desiderata (le regole non vengono seguite alla lettera oppure c'è un problema di compilazione).
Comunque ho buttato giù una soluzione... vediamo se alla luce delle tue spiegazioni potrà reggere.
Ciao, vecchio frac!
La frase alla fine era riferita a questa formula che ho usato:
=O(VAL.NON.DISP(CONFRONTA($B2:$C2;0));VAL.NON.DISP(CONFRONTA(B2;'Dieta 2'!$B$2:$C$2;0)))Purtroppo non riesco a farla funzionare con le due condizioni che chiedevo nel primo post, che riporto qui:
- colorarsi del tutto se manca completamente l'alimento;
- evidenziare solo il contorno cella se è parzialmente presenteCiao Carmen, quindi stai utilizzando una formattazione condizionale gestita da una formula nel foglio?
Ti allego la mia proposta, da testare a fondo. Per semplicità ho sistemato tutto nel primo foglio (tabella 1, tabella 2 da confrontare e tabella 3 con il risultato).
Come vedi ho utilizzato una tabella di appoggio che fa da base per la formattazione condizionale.
Allegati:
You must be logged in to view attached files.Sì, stavo provando con una FC nel foglio, ma non riesco come vorrei.
A prima vista, invece, mi sembra che la tua funzioni, ma vedo che il sabato della tabella 3 è evidenziato, cosa che non dovrebbe accadere perché "contorno" è presente in entrambe le tabelle (in Alimento 2 per la prima e Alimento 1 per la seconda).
Spero comunque non sia complicato lavorare su due fogli (volendo, con un terzo foglio di appoggio) perché le due tabelle da confrontare, molto più grandi, saranno necessariamente su due fogli distinti.
Il risultato è coerente con la regola... se l'alimento1 della tabella1 è corrispondente nella tabella2 lascia la cella invariata, se è presente parzialmente mette il bordo rosso, se non c'è colora di verde. Non avevo capito che alimento1 e alimento2 sono intercambiabili. La formula andrà ridisegnata.
Non sarà complicato lavorare su due fogli, ma propongo comunque la tabella di appoggio che sarà quella su cui si baserà la formattazione condizionale.
Sì, "alimento 1, 2" (e nella tabella finale anche 3, 4, ecc) sono intercambiabili. La formattazione condizionale "deve vedere", quindi confrontare, il tipo di alimento nella stessa riga delle due tabelle, in qualunque cella, non importa se non nella stessa colonna.
Il contenuto di una cella della tabella 1, quindi, può essere uguale ad una cella (della stessa riga) della tabella 2 in diverse situazioni; per semplicità ti allego il file con esempi pratici.
Non so se con quanto scritto ti ho incasinato la storia
.Nessun problema per una tabella di appoggio, ma che venga fatta su un terzo foglio preferibilmente.
Grazie, buona serata!
P.S.: perché non ricevo la notifica via e-mail delle risposte al thread (nonostante sia spuntata l'opzione)?
Allegati:
You must be logged in to view attached files.La formattazione condizionale lo "deve vedere" nella stessa riga, non importa se non nella stessa colonna.
Ci devo lavorare un po' su anche perchè hai detto che gli alimenti coinvolti possono essere molti. Quanti potrebbero essere? la formula risultante potrebbe non essere la strada più efficace (sei disponibile a una soluzione VBA?)...
perché non ricevo la notifica via e-mail delle risposte al thread (nonostante sia spuntata l'opzione)?
Non saprei. Devo girare la domanda al nostro Admin.
Scusami, intanto ho modificato la risposta e aggiunto un file di esempio.
Be', sì, gli alimenti saranno molti, alcune decine presi singolarmente ma il problema è che possono associarsi fra loro in diversi modi (ma sempre, al massimo, in coppia tipo pane - carne).
VBA l'ho usato per altre cose in passato; mi risulta più difficile quando devo apportare delle modifiche (non posso certo romperti le scatole per ogni virgola che vorrò cambiare), ma se fosse la soluzione per me andrebbe comunque bene.
Grazie!
Vecchio frac, guardando qua e là ho trovato un'altra formula che ti giro già applicata. Magari può esserti d'aiuto!
Funziona anche sul confronto di colonne diverse ma non "capisce" bene quando il contenuto di una cella è spezzato o semplicemente invertito.
Esempi:
in Alimento 1, "pane + pasta" è evidenziata ma non dovrebbe esserlo perché sia pane che pasta si trovano nella tabella del foglio 2 (seppure in colonne diverse);
in Alimento 4, "dolce + dessert" è evidenziata colorandosi del tutto, ma dovrebbe evidenziarsi solo col riquadro (o un altro colore) perché il contenuto della cella è solo parzialmente rispettato, essendoci "dolce" nella tabella 2 ma mancando "dessert".
in Alimento 5", "lenticchie + formaggio" è colorata ma non dovrebbe assolutamente esserlo perché nel foglio 2 c'è una cella "formaggio + lenticchie", quindi contenuto uguale seppure invertito.
Il foglio "Eccezioni" e la relativa regola può essermi utile, quindi lo lascerei.
Grazie!
Allegati:
You must be logged in to view attached files.ma non "capisce" bene quando il contenuto di una cella è spezzato o semplicemente invertito
Con sole formule è un problema. Almeno per me che navigo meglio con VBA 🙂
Il secondo file che hai postato utilizza una formula incompleta (la mia è più completa ma agisce solo su due celle e non su n celle per n alimenti, mentre sarebbe bello generalizzare).
Il punto è anche che si riesce a trovare un contenuto piccolo in una stringa più grande ma non viceversa e non conosco un modo facile con formule per splittare una cella in base a un delimitatore. Per esempio "pane + pasta" non verrà mai trovato in "pane" ma "pane" in "pane + pasta" sì. Bisogna suddividere la prima stringa in base al delimitatore scelto (in questo caso il più "+") e cercare ogni elemento nella seconda stringa.
Col tuo ultimo post poni anche una regola un po' diversa perchè affermi:
in Alimento 1, "pane + pasta" è evidenziata ma non dovrebbe esserlo perché sia pane che pasta si trovano nella tabella del foglio 2 (seppure in colonne diverse);
Quindi basta che uno degli elementi della cella in esame si trovi in corrispondenza della riga del giorno indipendentemente dalla sua posizione, giusto?
Temo che dovrai rassegnarti a utilizzare due righe di codice VBA e a imparare a manutenerlo (fermo restando che sei comunque autorizzata a:
romperti le scatole per ogni virgola che vorrò cambiare
... naturalmente con moderazione 🙂 )
VBA l'ho usato per altre cose in passato; mi risulta più difficile quando devo apportare delle modifiche
Allego la mia proposta, è un file con codice VBA. Nel primo foglio ci sono anche le regole che ho seguito e le istruzioni.
Dai un'occhiata e riparliamone.
Allegati:
You must be logged in to view attached files.Quindi basta che uno degli elementi della cella in esame si trovi in corrispondenza della riga del giorno indipendentemente dalla sua posizione, giusto?
Sì, giusto!
Tutto chiaro il resto, effettivamente è un problema e sinceramente io non sono in grado di risolverlo.
Do un'occhiata al tuo file e ti aggiorno...
Grazie mille per la disponibilità!
sinceramente io non sono in grado di risolverlo
Ammetto che con la mia versione di Excel (2013) non sono capace, usando solo formule, di splittare una cella in corrispondenza di un delimitatore. Ho visto che Google Sheet utilizza =SPLIT come formula, forse è stata implementata nei nuovissimi Excel... d'altronde come noto a tutti io non me la cavo bene con le formule 🙂
Sto testando la tua funzione; ti dico subito cosa "non va" per evitare che una "stupidaggine" diventi un intreccio a fine di tutto.
A prima vista mi sembra funzioni ma c'è una cosa che non mi permette di utilizzarla in maniera pratica: devi considerare che la tabella del "Foglio2", quella che va confrontata, io l'avrò dopo quella del "Foglio1".
Normalmente io apro il file, copio la prima tabella (da un altro file) nel Foglio1; poi creo la seconda tabella nel "Foglio2".
Per com'è strutturata adesso, la tua funzione non mi fa un confronto perché "per avviare l'elaborazione le macro devono essere attive e occorre una modifica in qualsiasi cella del range C2:K32. La verifica e la colorazione avviene solo per la riga che si sta modificando. Dopo la modifica il cursore rimane nella cella che si è modificata."
A me piace molto che il confronto venga fatto in diretta, come fosse una formattazione condizionale, ma servirebbe anche la possibilità di far agire la macro su tutta la prima tabella (dopo aver completato le due tabelle) in modo che mi evidenzi eventuali "anomalie".
Spero io non stia già sfociando oltre la
moderazione

Pensandoci, se proprio è complicato, a fine creazione delle due tabelle, potrei automatizzare un copia/incolla cella per cella della prima tabella sul Foglio1 così che mi faccia il confronto. Non so se è chiaro ma in mente ho una mezza soluzione. Certo, se ci fosse una macro come ho scritto prima, sarebbe di certo più "elegante".
Moderazione? Ma solo per fare una precisazione?
Naturalmente adesso hai introdotto delle informazioni che prima non c'erano, quindi è abbastanza naturale che l'impianto del programma vada rivisto per soddisfare il nuovo scenario. A me interessava che tu facessi dei test su questo file per saggiare il funzionamento e verificare che le regole fossero rispettate.
Il nuovo scenario prevede:
- manualmente copio un foglio da altro file e questo diventa il nuovo Foglio1 (si può automatizzare l'operazione? il foglio che viene copiato ha sempre lo stesso nome? ed è coerente, cioè i dati sono sempre nelle stesse posizioni di riga e colonna?)
- creo la seconda tabella in foglio2 (come la creo? manualmente? da zero? o su un format preimpostato dei giorni del mese?)
- faccio partire il controllo manualmente che evidenzia le eventuali anomalie ma voglio anche che se faccio qualche modifica questa evidenzi subito eventuali anomalie.
Per favore correggi, modifica, integra queste affermazioni per produrre il nuovo scenario... e poi come sempre ci aggiorniamo anche noi
Mi dispiace aggiungere nuovi scenari, è che mentre tutto si crea mi rendo conto di non aver precisato alcuni aspetti, a volte pensando ininfluenti.
Inoltre, spesso non so neanche se è possibile fare certe magie (leggi com'è ora la tua funzione), quindi non le propongo.
1) Sì, copio i dati sempre da uno stesso foglio e lo faccio manualmente perché la tabella è tipo 32 righe (riga di intestazione colonne + giorni del mese) per n colonne di alimenti, dove n può variare; siccome è un copia/incolla facile, non mi pongo neanche il problema di automatizzarlo.
Sì, il foglio copiato ha sempre lo stesso nome.
Sì, i dati sono sempre nelle stesse posizioni di riga ma non necessariamente di colonna (perché, ripeto, il numero di colonne può variare).
Nella tabella 1 i dati iniziano sempre in C2.2) La seconda tabella la creo sempre manualmente perché per farla devo rispettare una serie di regole che è "impossibile" automatizzare. Per ora va bene che continui a crearla io; magari "domani" si potrebbe vedere di automatizzare qualcosa.
La seconda tabella rispecchia sempre la prima per righe da confrontare (i giorni del mese) ma mentre il primo giorno del mese della tabella 1 è sempre in riga 2, il primo giorno del mese della tabella 2 può trovarsi alla riga 3, 4 o 5, quindi la prima cella da controllare potrà essere in C3, C4 o C5; ciò che conta è dove c'è il giorno 1 (sempre in colonna A) (la riga 2 la userò per una formula).
La seconda tabella, invece, non rispecchia le colonne (sia per intestazione della colonna sia per numero diverso e variabile da mese a mese rispetto al numero di colonne del foglio 1).3) Esattamente, sarebbe fantastico!
Per una questione di risalto e immediatezza, se possibile, vorrei che quando un alimento non è trovato la cella sia rossa (o qualunque altro colore ma non bianca).
Se il lavoro me lo permette, stasera stessa testo approfonditamente la tua attuale funzione.
Ti allego quelle che sarebbero le tabelle finite, vuote.
Allegati:
You must be logged in to view attached files.Allego la mia nuova proposta, ho riportato nel file l'esempio delle tabelle definitive che hai postato per ultimo. Ho cercato di seguire le nuove indicazioni. Tuttavia c'è ancora qualcosa che non mi convince 🙂
Fai dei test e riportami le cose che non vanno.
Allegati:
You must be logged in to view attached files.Buongiorno, vecchio frac!
La sto testando approfonditamente da 2 ore.
A volte mi capita che la funzione s'interrompa; non riesco a capire il perché ma il debug mi dice che la riga è la seguente:
If Intersect(Target, Sh.Range(Cells(2, "C"), Cells(32, n))) Is Nothing Then Exit SubDi sicuro posso dirti che la verifica manuale non funziona, ovvero mi sembra funzioni solo sulla prima riga, non su tutto il foglio.
Al momento, per fare una verifica manuale, faccio un "trova e sostituisci" di qualcosa, per esempio gli spazi (che poi ripristino), quindi modificandosi le celle queste ultime si aggiornano.
Continuo a testare perché forse qualcos'altro c'è ma non mi è ancora chiaro come e quando.
Grazie!
Una prima modifica che puoi fare è questa:
If Intersect(Target, Sh.Range(Sh.Cells(2, "C"), Sh.Cells(32, n))) Is Nothing Then Exit Subcioè qualificando pienamente (con il riferimento esplicito al foglio Sh) anche gli oggetti Cells del Range di confronto.
La verifica manuale premendo il pulsante dovrebbe attivarsi sulla riga ove si trova il cursore, naturalmente se ci sono delle celle compilate 🙂
Quando puoi allegami un pezzo di file con più di una riga compilata così lo verifichiamo in due.
-
AutoreArticoli
