Condividi:        

Confronto tra più celle (di testo) in diverse righe e colonn

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Confronto tra più celle (di testo) in diverse righe e colonn

Postdi Zinco83 » 16/01/17 15:10

Ciao a tutti.
Cercando qua e là non ho trovato la risposta esatta al mio quesito, che ora vi espongo cercando di essere il più chiaro possibile:
vorrei creare una macro che mi dia la possibilità di confrontare se il testo contenuto in più celle (presenti nella stessa riga ma anche in righe differenti) sia uguale tra loro e, qualora lo fosse, colorare le celle uguali.
Per farla semplice ho utilizzato la formattazione condizionale e il tutto funziona a meraviglia, l'unico problema è che quando vado a copiare una cella (trascinando la cella ad esempio per le successive N righe per duplicarne il contenuto) le "regole" vanno in palla e mi colora tutte le celle copiate.
Credo che questo "problema" si possa risolvere tramite una macro, ma non sono in grado di svilupparla.
In sostanza quindi, mi servirebbe una macro (o una funzione) che confronti (ad esempio) le celle da N8 a Z8, da N10 a Z10, da N12 a Z12... e che, se il contenuto di queste celle risulta uguale, le colori di rosso (sempre a titolo d'esempio).
Confido in un vostro aiuto e vi ringrazio in anticipo ;)
Zinco83
Utente Junior
 
Post: 14
Iscritto il: 16/01/17 14:55

Sponsor
 

Re: Confronto tra più celle (di testo) in diverse righe e co

Postdi Anthony47 » 16/01/17 15:27

Ciao Zinco83, benvenuto nel forum.
In sostanza quindi, mi servirebbe una macro (o una funzione) che confronti (ad esempio) le celle da N8 a Z8, da N10 a Z10, da N12 a Z12... e che, se il contenuto di queste celle risulta uguale, le colori di rosso (sempre a titolo d'esempio)

Dovresti chiarire se, nell'esempio, il confronto va fatto separatamente all'interno di ogni un gruppo (Nx:Zx) o all'interno di tutti i gruppi contemporaneamente, e se intendi che tutte le celle devono essere uguali o se basta che ci sia una ripetizione.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19181
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Confronto tra più celle (di testo) in diverse righe e co

Postdi Zinco83 » 16/01/17 15:56

Il confronto va fatto su tutti i gruppi, quindi su N righe e M colonne e deve evidenziare solo le celle uguali (che possono essere 2 o più).
Grazie per la tempestiva risposta
Zinco83
Utente Junior
 
Post: 14
Iscritto il: 16/01/17 14:55

Re: Confronto tra più celle (di testo) in diverse righe e co

Postdi ricky53 » 16/01/17 16:31

Ciao,
a me non è chiaro quanto segue:
Per farla semplice ho utilizzato la formattazione condizionale e il tutto funziona a meraviglia, l'unico problema è che quando vado a copiare una cella (trascinando la cella ad esempio per le successive N righe per duplicarne il contenuto) le "regole" vanno in palla e mi colora tutte le celle copiate.

chiarisci cosa hai fatto.

Inoltre il tuo "Per farla semplice" vuole dire che la soluzione che hai applicato è comunque valida anche se semplice?


Che formula hai utilizzato per la formattazione condizionale?

Puoi riportarla e dire in quali celle l'hai applicata?
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Confronto tra più celle (di testo) in diverse righe e co

Postdi Zinco83 » 16/01/17 16:48

ricky53 ha scritto:Ciao,
a me non è chiaro quanto segue:
Per farla semplice ho utilizzato la formattazione condizionale e il tutto funziona a meraviglia, l'unico problema è che quando vado a copiare una cella (trascinando la cella ad esempio per le successive N righe per duplicarne il contenuto) le "regole" vanno in palla e mi colora tutte le celle copiate.

chiarisci cosa hai fatto.

Inoltre il tuo "Per farla semplice" vuole dire che la soluzione che hai applicato è comunque valida anche se semplice?


Che formula hai utilizzato per la formattazione condizionale?

Puoi riportarla e dire in quali celle l'hai applicata?


La soluzione usata con la formattazione condizionale funziona, nel senso che se io scrivo nelle celle "sotto esame" una lista di nomi vengono visualizzati in rosso i nomi uguali.
Ad Esempio: metto una serie di nomi nelle celle B3, B4, B5, C3, C4, C5, H3, H4, H5 (un nome per ogni cella).... se tra queste celle esiste un duplicato allora quelle due celle (o più) si evidenziano di rosso.
Questo lo ottengo semplicemente utilizzando il tasto "Formattazione condizionale" (presente nel menu HOME) e selezionando la voce "Regole evidenziazione celle" -> "Valori duplicati" (questo in Office 2013).
Il problema si ha però quando seleziono una cella (ad esempio la B3) e la trascino nella cella vicina (ad esempio nella cella A3, come si fa quando devi copiare il contenuto di quella cella su un altra, duplicando quindi il contenuto duplica anche la formula contenuta); così facendo mi evidenzia le celle B3 e A3 anche se A3 non fa parte delle celle da confrontare, perché credo che facendo il "trascinamento" si porti dietro anche la formula che sta sotto quella cella.
Questo problema non si avrebbe se il trascinamento copiasse solo il testo e non la formula, ma purtroppo non è possibile, quindi credo che con una macro si riuscirebbe ad aggirare questo problema.
Spero di essermi spiegato...
Zinco83
Utente Junior
 
Post: 14
Iscritto il: 16/01/17 14:55

Re: Confronto tra più celle (di testo) in diverse righe e co

Postdi ricky53 » 16/01/17 17:24

Ciao,
per il momento potresti utilizzare Copia/Incolla speciale/Valori.

In attesa che si trovi una soluzione a questa tua richiesta.
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Confronto tra più celle (di testo) in diverse righe e co

Postdi Zinco83 » 16/01/17 17:32

ricky53 ha scritto:Ciao,
per il momento potresti utilizzare Copia/Incolla speciale/Valori.

Eh si, so che questa è la soluzione più immediata ma questa macro la devo applicare su una tabella turni che non gestisco io e chi la modifica settimanalmente ha l'abitudine di trascinare le celle per copiare i nomi in altri turni.
Mi servirebbe una soluzione a lungo termine
Zinco83
Utente Junior
 
Post: 14
Iscritto il: 16/01/17 14:55

Re: Confronto tra più celle (di testo) in diverse righe e co

Postdi ricky53 » 16/01/17 19:34

Può andare bene una macro che, al cambiamento di celle fuori del tuo intervallo con la formattazione condizionale, cancelli tutte le altre formattazioni condizionali?
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Confronto tra più celle (di testo) in diverse righe e co

Postdi Anthony47 » 16/01/17 21:28

La macro suggerita da Ricky (vedi sopra) risolverebbe meta' problema; poi bisognerebbe risolvere il caso dell'utente che copia una cella non formattata e la incolla nell'area a cui e' stata applicata la formattazione condizionale.

Si potrebbe immaginare che periodicamente vengono cancellate tutte le formattazioni dal foglio e vengano riapplicate alle sole aree note.

Per fare una prova:
1) avvia la registrazione di una macro che chiamerai "Riform"; poi diligentemente:
>seleziona tutta l'area del foglio
>imposta il colore di riempimento delle celle su Nessun riempimento
>tramite Formattazione condizionale rimuovi tutte le regole di formattazione
>seleziona poi le sole aree a cui applicare la formattazione condizionale e imposta le regole che ti servono
>seleziona la cella A1
>interrompi la registrazione

2) poi Tasto dx sul tab col nome del foglio su cui stai lavorando; scegli Visualizza codice
3) copia questa macro e inseriscila nel frame vuoto di destra
Codice: Seleziona tutto
Private Sub Worksheet_Activate()
Call Riform
End Sub

In questo modo tutte le volte che attivi il foglio sara' avviata la macro che hai registrato, che rimuovera' le formattazioni presenti e applichera' quella voluta.
Il processo potrebbe anche essere attivato su altre condizioni, ad esempio inserendo un Pulsante a cui viene associata la Sub Riform

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19181
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Confronto tra più celle (di testo) in diverse righe e co

Postdi Zinco83 » 17/01/17 08:50

Prima di tutto, vi ringrazio per il supporto.
Le soluzioni proposte, seppur interessanti, non risolvono il mio problema:
-ricky53: il problema che ho descritto qualche post prima si verifica anche quando sovrascrivo una cella contenente una formattazione condizionale con un altra cella che contiene un altra formattazione condizionale, non solo quando sovrascrivo celle al di fuori della formattazione condizionale. Cancellare le formattazioni poi non mi consentirebbe di avere delle evidenze in tempo reale qualora due celle fossero uguali (del tipo: compilo la scheda dei turni, segno "Ciccio" il lunedi mattina e per sbaglio metto "Ciccio" anche il lunedi notte, senza formattazione non mi evidenzia questa ripetizione).
-Anthony: il tuo procedimento, da quel che ho capito, funziona ogni qualvolta riattivo il foglio di lavoro, ma in "real time" non evidenzia le celle ripetute. Non essendo io a compilare la tabella dei turni ma gente con una manualità ridotta, questo procedimento da te proposto risulterebbe forse troppo complesso.

Vi chiedo quindi: e se nel "Foglio2" creo una tabella uguale a quella del "Foglio1", ma nel "Foglio2" mettessi delle formule per ogni cella che fanno riferimento alle celle del "Foglio1"? In questo caso, modificando e spostando le celle nel "Foglio1" non altererei le formule (in quanto presenti nel "Foglio2"). Ad esempio: nella cella A3-Foglio2 scrivo una formula che colora la cella A3-Foglio1 se A3-Foglio1 è uguale a B3-Foglio1, o a C3-Foglio1, o a D3-Foglio1...ecc...
E' fattibile? Se si, quale formula dovrei usare per cambiare colore di due celle se queste due sono uguali?
Zinco83
Utente Junior
 
Post: 14
Iscritto il: 16/01/17 14:55

Re: Confronto tra più celle (di testo) in diverse righe e co

Postdi ricky53 » 17/01/17 11:27

Ciao,
con le formule NON si può fare.
Occorre una macro scritta sapendo su quale intervallo vengono scritti i turni.

Prima di far provare gli utenti del forum a scrivere del codice dovresti inviare un file di esempio, senza dati riservati, e dovresti descrivere i passi fa la persona che compila il foglio dei turni, in quale fogli ed in che intervalli.
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Confronto tra più celle (di testo) in diverse righe e co

Postdi wallace&gromit » 17/01/17 15:55

eppure magari qualcosa si può fare con la convalida dati, basta che di volta in volta, quando si sceglie un nominativo, questo scompare dalla lista dei nominativi selezionabili.
Poi si abolisce il trascinamento di qua e di là ma si obbliga ad usare la casella a discesa per inserire i nomi, non penso sia chiedere troppo.
Per elaborare qualcosa serve però un modello con la struttura dei dati.
Office2016 + 2019 su win11
Avatar utente
wallace&gromit
Utente Senior
 
Post: 2174
Iscritto il: 16/01/12 14:21

Re: Confronto tra più celle (di testo) in diverse righe e co

Postdi Zinco83 » 18/01/17 10:00

Qui -> https://www.sendspace.com/file/fdaqvj trovate il file d'esempio.
La tabella è molto semplificata, ma rende bene l'idea di come è strutturata quella originale.
Ci sono 3 turni e 5 macchinari: in un turno ogni operatore può gestire UNA E UNA SOLA macchina. Ad esempio: se il lunedi Ciccio è al turno 1 alla macchina 1, allora non può essere contemporaneamente in nessun altra macchina del lunedi e nemmeno in nessun altro turno (e chiaramente nemmeno tra i Disponibili). Se per sbaglio inserisco Ciccio il martedì al turno 2 alla macchina 1, mi deve segnalare l'errore in quanto Ciccio è gia presente martedì al turno 1.

Questi controlli sono fattibili tramite la formattazione condizionale, che però (come spiegato nei post precedenti) và in tilt quando chi compila la tabella fa un copia/incolla dei nomi.

L'utente che compila la tabella, avendo a che fare con centinaia di nomi, si semplifica la vita facendo copia incolla in questo modo: nella colonna Disponibili sono presenti i nomi degli operatori che devono sostituire alcuni operatori presenti nei turni, uno di questi viene copiato e incollato nella tabella del turno e successivamente tramite trascinamento si incolla il nome nelle celle sottostanti (al martedì, al mercoledì e via dicendo). Esempio: Pippo (che sta tra i disponibili) prenderà il posto di Ciccio alla macchina 1 e al turno 1. L'utente che compila la tabella copia il nome Pippo, lo incolla il lunedi al turno 1/macchina 1 al posto di Ciccio, e tramite trascinamento copia la cella anche nei giorni seguenti (martedì, mercoledì, giovedì e venerdì). Così facendo, purtroppo, si tira dietro anche le regole della formattazione condizionale che di conseguenza và in tilt.

Spero di essere stato chiaro e ringrazio tutti per l'aiuto
Zinco83
Utente Junior
 
Post: 14
Iscritto il: 16/01/17 14:55

Re: Confronto tra più celle (di testo) in diverse righe e co

Postdi Anthony47 » 18/01/17 23:29

Io torno alla proposta che avevo fatto qui: viewtopic.php?f=26&t=108070&p=633804#p633750
E' vero che "per fare una prova" l'aggiornamento sarebbe avvenuto solo all'attivazione del foglio, ma ci sono altri modi per rendere piu' frequente l'esecuzione dei comandi, ad esempio l'evento WorksheetChange che si scatena praticamente a ogni cosa che si fa sul foglio.
Quindi fai la prova come e' stata suggerita, se il risultato e' buono renderemo la cosa piu' "movimentata". Tra l'altro questo metodo e' abbastanza simile a quello di creare un "foglio ombra" con le formattazioni.

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19181
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Confronto tra più celle (di testo) in diverse righe e co

Postdi Zinco83 » 19/01/17 08:59

Anthony47 ha scritto:Io torno alla proposta che avevo fatto qui: viewtopic.php?f=26&t=108070&p=633804#p633750
E' vero che "per fare una prova" l'aggiornamento sarebbe avvenuto solo all'attivazione del foglio, ma ci sono altri modi per rendere piu' frequente l'esecuzione dei comandi, ad esempio l'evento WorksheetChange che si scatena praticamente a ogni cosa che si fa sul foglio.
Quindi fai la prova come e' stata suggerita, se il risultato e' buono renderemo la cosa piu' "movimentata". Tra l'altro questo metodo e' abbastanza simile a quello di creare un "foglio ombra" con le formattazioni.

Ciao

Ok ci proverò, grazie Anthony.
Io sono un po' impedito però, mi potresti spiegare più nel dettaglio i passaggi? Ad esempio, nel punto 1:
1) avvia la registrazione di una macro che chiamerai "Riform"; poi diligentemente:
>seleziona tutta l'area del foglio
>imposta il colore di riempimento delle celle su Nessun riempimento
>tramite Formattazione condizionale rimuovi tutte le regole di formattazione
>seleziona poi le sole aree a cui applicare la formattazione condizionale e imposta le regole che ti servono
>seleziona la cella A1
>interrompi la registrazione

Come devo fare per avviare la registrazione di una macro? I passaggi successivi che elenchi devono essere fatti come se stessi "registrando" delle sequenze?
Zinco83
Utente Junior
 
Post: 14
Iscritto il: 16/01/17 14:55

Re: Confronto tra più celle (di testo) in diverse righe e co

Postdi wallace&gromit » 19/01/17 11:18

Visto che io "so' de coccio", ho elaborato un sistema tutto con le formule, che trovi in questo file:
http://www.filedropper.com/prova3_1

Nella colonna K creo una stringa con tutti i nomi già attribuiti (si aggiungono mano a mano, scendendo, e in K20 ho il totale); nella colonna O ho l'elenco di tutti i dipendenti;
Nella colonna L (definita con "Nomi") scarto tutti i dipendenti già utilizzati con la formula:
Codice: Seleziona tutto
=SE(SE.ERRORE(TROVA(O3;$K$20)>0;0);"";O3)

Nella colonna M compatto l'elenco con in cima i nomi disponibili:
Codice: Seleziona tutto
=SE.ERRORE(INDICE(Nomi;PICCOLO(SE(VAL.NUMERO(CONFRONTA(RIF.RIGA(Nomi)-2;SE(Nomi=0;"";CONFRONTA(Nomi;Nomi;0));0));CONFRONTA(Nomi;Nomi;0);"");RIF.RIGA()-2));"")
questa è una formula matriciale, che tra l'altro mi dà dei comportamenti anomali riguardo alla seconda posizione dell'elenco, magari qualcuno sa dirmi come rimediare.

Nella tabella principale ho messo le convalide, in modo da potere scegliere di volta in volta solo i nomi che si trovano nella colonna M.
Non si fa più né copia/incolla né trascinamento. Basta nascondere le colonne in cui nessuno deve mettere mano e il file dovrebbe essere "a prova di scimmia".
Office2016 + 2019 su win11
Avatar utente
wallace&gromit
Utente Senior
 
Post: 2174
Iscritto il: 16/01/12 14:21

Re: Confronto tra più celle (di testo) in diverse righe e co

Postdi ricky53 » 19/01/17 12:56

Ciao W&G,
interessante soluzione ...
la scarico e ... me la gusto!
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Confronto tra più celle (di testo) in diverse righe e co

Postdi Zinco83 » 20/01/17 09:11

wallace&gromit ha scritto:Visto che io "so' de coccio", ho elaborato un sistema tutto con le formule, che trovi in questo file:
http://www.filedropper.com/prova3_1

Nella colonna K creo una stringa con tutti i nomi già attribuiti (si aggiungono mano a mano, scendendo, e in K20 ho il totale); nella colonna O ho l'elenco di tutti i dipendenti;
Nella colonna L (definita con "Nomi") scarto tutti i dipendenti già utilizzati con la formula:
Codice: Seleziona tutto
=SE(SE.ERRORE(TROVA(O3;$K$20)>0;0);"";O3)

Nella colonna M compatto l'elenco con in cima i nomi disponibili:
Codice: Seleziona tutto
=SE.ERRORE(INDICE(Nomi;PICCOLO(SE(VAL.NUMERO(CONFRONTA(RIF.RIGA(Nomi)-2;SE(Nomi=0;"";CONFRONTA(Nomi;Nomi;0));0));CONFRONTA(Nomi;Nomi;0);"");RIF.RIGA()-2));"")
questa è una formula matriciale, che tra l'altro mi dà dei comportamenti anomali riguardo alla seconda posizione dell'elenco, magari qualcuno sa dirmi come rimediare.

Nella tabella principale ho messo le convalide, in modo da potere scegliere di volta in volta solo i nomi che si trovano nella colonna M.
Non si fa più né copia/incolla né trascinamento. Basta nascondere le colonne in cui nessuno deve mettere mano e il file dovrebbe essere "a prova di scimmia".


Davvero figa questa soluzione wallace, complimenti! Purtroppo però c'è un intoppo: ti faccio un esempio, se Pino sta alla macchina 1 al turno 1 il lunedi, non per forza deve stare alla macchina 1 e al turno 1 anche i giorni successivi. Può capitare che un operatore venga inserito nel turno 1 alla macchina 1 il lunedi, ma magari il mercoledì viene spostato alla macchina 3.... la tua soluzione è comunque lodevole perché veramente a "prova di scimmia"
Zinco83
Utente Junior
 
Post: 14
Iscritto il: 16/01/17 14:55

Re: Confronto tra più celle (di testo) in diverse righe e co

Postdi Anthony47 » 21/01/17 00:36

Per le istruzioni su come registrare una macro:
viewtopic.php?f=26&t=103893&p=622593#p622593

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19181
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Confronto tra più celle (di testo) in diverse righe e co

Postdi wallace&gromit » 21/01/17 09:55

Il commento lapidario di Anthony ci riporta con i piedi per terra: per fare tutte le funzioni che servono è necessario ricorrere alle macro.
Però, visto che ho lanciato l'idea della convalida dati, e visto che è piaciuta, mi piacerebbe aiutare Zinco a sviluppare qualcosa in questa direzione, ma non sono sicuro di farcela da solo.
La mia idea è questa:
- in una colonna rimane l'elenco completo dei nominativi disponibili
- in 5 celle di appoggio creo degli array in cui vado a pescare con la convalida dati (un array per giorno della settimana)
- tutte le celle del tabellone sono composte da convalida dati
- ogni volta che seleziono un nome questo viene tolto dall'array di quel giorno e inoltre, provvisoriamente, viene attribuito automaticamente ai giorni sottostanti, i quali rimangono comunque in forma di convalida dati, di modo che si possa sempre cambiare quel nominativo.

La mia difficoltà consiste nel creare gli array da mettere nelle celle in modo da renderli riconoscibili per una convalida dati.
Office2016 + 2019 su win11
Avatar utente
wallace&gromit
Utente Senior
 
Post: 2174
Iscritto il: 16/01/12 14:21

Prossimo

Torna a Applicazioni Office Windows


Topic correlati a "Confronto tra più celle (di testo) in diverse righe e colonn":


Chi c’è in linea

Visitano il forum: Nessuno e 33 ospiti

cron