Discussione:
Ricerca su due colonne
(troppo vecchio per rispondere)
Stryc9
2020-05-15 13:05:10 UTC
Permalink
Salve a tutti

vi espongo il problema che mi afflige ormai da due mesi:

devo confrontare due colonne di nominativi iscritti ad un tipo servizio, son qualche migliaio.
Ogni mese devo controllare quanti degli iscritti a quel service sono sempre attivi e quanti no, per la fatturazione.

Per far ciò devo fare l'estrazione degli iscritti in generale, e confrontare nome nome e evidenziare i cancellati, per escludere gli eventuali abbonati dalla fatturazione.

Io vorrei affiancare le due colonne con i nomi, e far si che excel trovi ed evidenzi i nomi interessati.

come possofare?

grazie mille
b***@gmail.com
2020-05-15 15:31:27 UTC
Permalink
Post by Stryc9
Salve a tutti
devo confrontare due colonne di nominativi iscritti ad un tipo servizio, son qualche migliaio.
Ogni mese devo controllare quanti degli iscritti a quel service sono sempre attivi e quanti no, per la fatturazione.
Per far ciò devo fare l'estrazione degli iscritti in generale, e confrontare nome nome e evidenziare i cancellati, per escludere gli eventuali abbonati dalla fatturazione.
Io vorrei affiancare le due colonne con i nomi, e far si che excel trovi ed evidenzi i nomi interessati.
come possofare?
grazie mille
La funzione CONFRONTA ti informa se un valore (nel tuo caso appartenente alla lista 1) è presente in una matrice (nel tuo caso la colonna dei nomi della lista 2 ) restituendo la posizione nella lista oppure #ND se non lo trova. In verità non sei stato molto chiaro su quale sottoinsieme delle 2 liste devi estrarre.
Ma Excel per questo tipo di problemi offre attraverso il tool Power Query lo strumento ideale per azioni ripetitive per liste che frequentemente si aggiornano: non devi preoccuparti di aggiornare formule in relazione alla lunghezza degli elenchi. Che versione di Excel hai? Puoi condividere un file con dati fittizi?

Elio
Stryc9
2020-05-16 04:33:47 UTC
Permalink
Post by b***@gmail.com
Post by Stryc9
Salve a tutti
devo confrontare due colonne di nominativi iscritti ad un tipo servizio, son qualche migliaio.
Ogni mese devo controllare quanti degli iscritti a quel service sono sempre attivi e quanti no, per la fatturazione.
Per far ciò devo fare l'estrazione degli iscritti in generale, e confrontare nome nome e evidenziare i cancellati, per escludere gli eventuali abbonati dalla fatturazione.
Io vorrei affiancare le due colonne con i nomi, e far si che excel trovi ed evidenzi i nomi interessati.
come possofare?
grazie mille
La funzione CONFRONTA ti informa se un valore (nel tuo caso appartenente alla lista 1) è presente in una matrice (nel tuo caso la colonna dei nomi della lista 2 ) restituendo la posizione nella lista oppure #ND se non lo trova. In verità non sei stato molto chiaro su quale sottoinsieme delle 2 liste devi estrarre.
Ma Excel per questo tipo di problemi offre attraverso il tool Power Query lo strumento ideale per azioni ripetitive per liste che frequentemente si aggiornano: non devi preoccuparti di aggiornare formule in relazione alla lunghezza degli elenchi. Che versione di Excel hai? Puoi condividere un file con dati fittizi?
Elio
Ciao Elio


Intanto grazie per la risposta

Ho un excel 2019 mso



Allora spiego meglio (o ci provo)

Tutti i mesi mi viene inviato un file per fatturazione, contenente un elenco di iscritti (migliaia) ad un tipo di servizio offerto da una ditta x,

Io devo fare da un anagrafe iscritti a tutti i servizi, l'estrazione generale degli utenti che hanno cancellato l'scrizione in generale, e cercare nel particolare quali di questi utenti che hanno disdetto erano abbonati del servizio di quella ditta.

Praticamente nella colonna 1 ci sarebbe tutto l'elenco degli iscritti al servizio, nella colonna 2 (che inserisco io) l'elenco degli utenti che si sono cancellati in generale da tutti i servizi, nella colonna 3, vuota dovrebbero risultare i nomi presenti nella colonna uno da togliere dalla fatturazione. Oppure evidenziato, o un simbolo, una parola, qualcosa che automaticamente
mi dica quali sono gli utenti da togliere dalla colonna 1.


Altra domanda: siccome c'è una colonna che contiene i codici fiscali, e spesso viene compilata scorrettamente, esiste una formula che mi segnali quali dei codici fiscali è errato?

ps: il file lo avrei anche creato, ma come lo metto qui?
Andrea.9
2020-05-16 10:01:44 UTC
Permalink
Post by Stryc9
Post by b***@gmail.com
Post by Stryc9
Salve a tutti
devo confrontare due colonne di nominativi iscritti ad un tipo servizio, son qualche migliaio.
Ogni mese devo controllare quanti degli iscritti a quel service sono sempre attivi e quanti no, per la fatturazione.
Per far ciò devo fare l'estrazione degli iscritti in generale, e confrontare nome nome e evidenziare i cancellati, per escludere gli eventuali abbonati dalla fatturazione.
Io vorrei affiancare le due colonne con i nomi, e far si che excel trovi ed evidenzi i nomi interessati.
come possofare?
grazie mille
La funzione CONFRONTA ti informa se un valore (nel tuo caso appartenente alla lista 1) è presente in una matrice (nel tuo caso la colonna dei nomi della lista 2 ) restituendo la posizione nella lista oppure #ND se non lo trova. In verità non sei stato molto chiaro su quale sottoinsieme delle 2 liste devi estrarre.
Ma Excel per questo tipo di problemi offre attraverso il tool Power Query lo strumento ideale per azioni ripetitive per liste che frequentemente si aggiornano: non devi preoccuparti di aggiornare formule in relazione alla lunghezza degli elenchi. Che versione di Excel hai? Puoi condividere un file con dati fittizi?
Elio
Ciao Elio
Intanto grazie per la risposta
Ho un excel 2019 mso
Allora spiego meglio (o ci provo)
Tutti i mesi mi viene inviato un file per fatturazione, contenente un elenco di iscritti (migliaia) ad un tipo di servizio offerto da una ditta x,
Io devo fare da un anagrafe iscritti a tutti i servizi, l'estrazione generale degli utenti che hanno cancellato l'scrizione in generale, e cercare nel particolare quali di questi utenti che hanno disdetto erano abbonati del servizio di quella ditta.
Praticamente nella colonna 1 ci sarebbe tutto l'elenco degli iscritti al servizio, nella colonna 2 (che inserisco io) l'elenco degli utenti che si sono cancellati in generale da tutti i servizi, nella colonna 3, vuota dovrebbero risultare i nomi presenti nella colonna uno da togliere dalla fatturazione. Oppure evidenziato, o un simbolo, una parola, qualcosa che automaticamente
mi dica quali sono gli utenti da togliere dalla colonna 1.
Altra domanda: siccome c'è una colonna che contiene i codici fiscali, e spesso viene compilata scorrettamente, esiste una formula che mi segnali quali dei codici fiscali è errato?
ps: il file lo avrei anche creato, ma come lo metto qui?
il file lo devi condividere su qualche cloud (drive, Dropbox, eccetera) e mettere qui il link per scaricarlo.
Stryc9
2020-05-16 10:05:49 UTC
Permalink
Post by Andrea.9
Post by Stryc9
Post by b***@gmail.com
Post by Stryc9
Salve a tutti
devo confrontare due colonne di nominativi iscritti ad un tipo servizio, son qualche migliaio.
Ogni mese devo controllare quanti degli iscritti a quel service sono sempre attivi e quanti no, per la fatturazione.
Per far ciò devo fare l'estrazione degli iscritti in generale, e confrontare nome nome e evidenziare i cancellati, per escludere gli eventuali abbonati dalla fatturazione.
Io vorrei affiancare le due colonne con i nomi, e far si che excel trovi ed evidenzi i nomi interessati.
come possofare?
grazie mille
La funzione CONFRONTA ti informa se un valore (nel tuo caso appartenente alla lista 1) è presente in una matrice (nel tuo caso la colonna dei nomi della lista 2 ) restituendo la posizione nella lista oppure #ND se non lo trova. In verità non sei stato molto chiaro su quale sottoinsieme delle 2 liste devi estrarre.
Ma Excel per questo tipo di problemi offre attraverso il tool Power Query lo strumento ideale per azioni ripetitive per liste che frequentemente si aggiornano: non devi preoccuparti di aggiornare formule in relazione alla lunghezza degli elenchi. Che versione di Excel hai? Puoi condividere un file con dati fittizi?
Elio
Ciao Elio
Intanto grazie per la risposta
Ho un excel 2019 mso
Allora spiego meglio (o ci provo)
Tutti i mesi mi viene inviato un file per fatturazione, contenente un elenco di iscritti (migliaia) ad un tipo di servizio offerto da una ditta x,
Io devo fare da un anagrafe iscritti a tutti i servizi, l'estrazione generale degli utenti che hanno cancellato l'scrizione in generale, e cercare nel particolare quali di questi utenti che hanno disdetto erano abbonati del servizio di quella ditta.
Praticamente nella colonna 1 ci sarebbe tutto l'elenco degli iscritti al servizio, nella colonna 2 (che inserisco io) l'elenco degli utenti che si sono cancellati in generale da tutti i servizi, nella colonna 3, vuota dovrebbero risultare i nomi presenti nella colonna uno da togliere dalla fatturazione. Oppure evidenziato, o un simbolo, una parola, qualcosa che automaticamente
mi dica quali sono gli utenti da togliere dalla colonna 1.
Altra domanda: siccome c'è una colonna che contiene i codici fiscali, e spesso viene compilata scorrettamente, esiste una formula che mi segnali quali dei codici fiscali è errato?
ps: il file lo avrei anche creato, ma come lo metto qui?
il file lo devi condividere su qualche cloud (drive, Dropbox, eccetera) e mettere qui il link per scaricarlo.
grazie! provvedo
Stryc9
2020-05-16 10:19:13 UTC
Permalink
Post by Stryc9
Post by Andrea.9
Post by Stryc9
Post by b***@gmail.com
Post by Stryc9
Salve a tutti
devo confrontare due colonne di nominativi iscritti ad un tipo servizio, son qualche migliaio.
Ogni mese devo controllare quanti degli iscritti a quel service sono sempre attivi e quanti no, per la fatturazione.
Per far ciò devo fare l'estrazione degli iscritti in generale, e confrontare nome nome e evidenziare i cancellati, per escludere gli eventuali abbonati dalla fatturazione.
Io vorrei affiancare le due colonne con i nomi, e far si che excel trovi ed evidenzi i nomi interessati.
come possofare?
grazie mille
La funzione CONFRONTA ti informa se un valore (nel tuo caso appartenente alla lista 1) è presente in una matrice (nel tuo caso la colonna dei nomi della lista 2 ) restituendo la posizione nella lista oppure #ND se non lo trova. In verità non sei stato molto chiaro su quale sottoinsieme delle 2 liste devi estrarre.
Ma Excel per questo tipo di problemi offre attraverso il tool Power Query lo strumento ideale per azioni ripetitive per liste che frequentemente si aggiornano: non devi preoccuparti di aggiornare formule in relazione alla lunghezza degli elenchi. Che versione di Excel hai? Puoi condividere un file con dati fittizi?
Elio
Ciao Elio
Intanto grazie per la risposta
Ho un excel 2019 mso
Allora spiego meglio (o ci provo)
Tutti i mesi mi viene inviato un file per fatturazione, contenente un elenco di iscritti (migliaia) ad un tipo di servizio offerto da una ditta x,
Io devo fare da un anagrafe iscritti a tutti i servizi, l'estrazione generale degli utenti che hanno cancellato l'scrizione in generale, e cercare nel particolare quali di questi utenti che hanno disdetto erano abbonati del servizio di quella ditta.
Praticamente nella colonna 1 ci sarebbe tutto l'elenco degli iscritti al servizio, nella colonna 2 (che inserisco io) l'elenco degli utenti che si sono cancellati in generale da tutti i servizi, nella colonna 3, vuota dovrebbero risultare i nomi presenti nella colonna uno da togliere dalla fatturazione. Oppure evidenziato, o un simbolo, una parola, qualcosa che automaticamente
mi dica quali sono gli utenti da togliere dalla colonna 1.
Altra domanda: siccome c'è una colonna che contiene i codici fiscali, e spesso viene compilata scorrettamente, esiste una formula che mi segnali quali dei codici fiscali è errato?
ps: il file lo avrei anche creato, ma come lo metto qui?
il file lo devi condividere su qualche cloud (drive, Dropbox, eccetera) e mettere qui il link per scaricarlo.
grazie! provvedo
https://drive.google.com/file/d/1PiBsdlu-_YN3C7eKGXOcwqprfVBRvSWN/view?usp=sharing
Andrea.9
2020-05-16 11:14:42 UTC
Permalink
Post by Stryc9
Post by Stryc9
Post by Andrea.9
Post by Stryc9
Post by b***@gmail.com
Post by Stryc9
Salve a tutti
devo confrontare due colonne di nominativi iscritti ad un tipo servizio, son qualche migliaio.
Ogni mese devo controllare quanti degli iscritti a quel service sono sempre attivi e quanti no, per la fatturazione.
Per far ciò devo fare l'estrazione degli iscritti in generale, e confrontare nome nome e evidenziare i cancellati, per escludere gli eventuali abbonati dalla fatturazione.
Io vorrei affiancare le due colonne con i nomi, e far si che excel trovi ed evidenzi i nomi interessati.
come possofare?
grazie mille
La funzione CONFRONTA ti informa se un valore (nel tuo caso appartenente alla lista 1) è presente in una matrice (nel tuo caso la colonna dei nomi della lista 2 ) restituendo la posizione nella lista oppure #ND se non lo trova. In verità non sei stato molto chiaro su quale sottoinsieme delle 2 liste devi estrarre.
Ma Excel per questo tipo di problemi offre attraverso il tool Power Query lo strumento ideale per azioni ripetitive per liste che frequentemente si aggiornano: non devi preoccuparti di aggiornare formule in relazione alla lunghezza degli elenchi. Che versione di Excel hai? Puoi condividere un file con dati fittizi?
Elio
Ciao Elio
Intanto grazie per la risposta
Ho un excel 2019 mso
Allora spiego meglio (o ci provo)
Tutti i mesi mi viene inviato un file per fatturazione, contenente un elenco di iscritti (migliaia) ad un tipo di servizio offerto da una ditta x,
Io devo fare da un anagrafe iscritti a tutti i servizi, l'estrazione generale degli utenti che hanno cancellato l'scrizione in generale, e cercare nel particolare quali di questi utenti che hanno disdetto erano abbonati del servizio di quella ditta.
Praticamente nella colonna 1 ci sarebbe tutto l'elenco degli iscritti al servizio, nella colonna 2 (che inserisco io) l'elenco degli utenti che si sono cancellati in generale da tutti i servizi, nella colonna 3, vuota dovrebbero risultare i nomi presenti nella colonna uno da togliere dalla fatturazione. Oppure evidenziato, o un simbolo, una parola, qualcosa che automaticamente
mi dica quali sono gli utenti da togliere dalla colonna 1.
Altra domanda: siccome c'è una colonna che contiene i codici fiscali, e spesso viene compilata scorrettamente, esiste una formula che mi segnali quali dei codici fiscali è errato?
ps: il file lo avrei anche creato, ma come lo metto qui?
il file lo devi condividere su qualche cloud (drive, Dropbox, eccetera) e mettere qui il link per scaricarlo.
grazie! provvedo
https://drive.google.com/file/d/1PiBsdlu-_YN3C7eKGXOcwqprfVBRvSWN/view?usp=sharing
METODO 1
seleziona colonna A
Dati -> Convalida dati -> Consenti -> Elenco
Origine -> seleziona colonna B
togli la selezione in Elenco nella cella
quindi OK
Dati -> Cerchia dati non validi
questo ti evidenzia i nominativi da mantenere
quelli non cerchiati sono da cancellare
attenzione: i dati devono essere gli stessi, se c'e' uno spazio in fondo o una lettera mancante non lo riconosce come dato uguale (nel tuo esempio succede)
ciao
andrea
Andrea.9
2020-05-16 12:02:31 UTC
Permalink
Post by Andrea.9
Post by Stryc9
Post by Stryc9
Post by Andrea.9
Post by Stryc9
Post by b***@gmail.com
Post by Stryc9
Salve a tutti
devo confrontare due colonne di nominativi iscritti ad un tipo servizio, son qualche migliaio.
Ogni mese devo controllare quanti degli iscritti a quel service sono sempre attivi e quanti no, per la fatturazione.
Per far ciò devo fare l'estrazione degli iscritti in generale, e confrontare nome nome e evidenziare i cancellati, per escludere gli eventuali abbonati dalla fatturazione.
Io vorrei affiancare le due colonne con i nomi, e far si che excel trovi ed evidenzi i nomi interessati.
come possofare?
grazie mille
La funzione CONFRONTA ti informa se un valore (nel tuo caso appartenente alla lista 1) è presente in una matrice (nel tuo caso la colonna dei nomi della lista 2 ) restituendo la posizione nella lista oppure #ND se non lo trova. In verità non sei stato molto chiaro su quale sottoinsieme delle 2 liste devi estrarre.
Ma Excel per questo tipo di problemi offre attraverso il tool Power Query lo strumento ideale per azioni ripetitive per liste che frequentemente si aggiornano: non devi preoccuparti di aggiornare formule in relazione alla lunghezza degli elenchi. Che versione di Excel hai? Puoi condividere un file con dati fittizi?
Elio
Ciao Elio
Intanto grazie per la risposta
Ho un excel 2019 mso
Allora spiego meglio (o ci provo)
Tutti i mesi mi viene inviato un file per fatturazione, contenente un elenco di iscritti (migliaia) ad un tipo di servizio offerto da una ditta x,
Io devo fare da un anagrafe iscritti a tutti i servizi, l'estrazione generale degli utenti che hanno cancellato l'scrizione in generale, e cercare nel particolare quali di questi utenti che hanno disdetto erano abbonati del servizio di quella ditta.
Praticamente nella colonna 1 ci sarebbe tutto l'elenco degli iscritti al servizio, nella colonna 2 (che inserisco io) l'elenco degli utenti che si sono cancellati in generale da tutti i servizi, nella colonna 3, vuota dovrebbero risultare i nomi presenti nella colonna uno da togliere dalla fatturazione. Oppure evidenziato, o un simbolo, una parola, qualcosa che automaticamente
mi dica quali sono gli utenti da togliere dalla colonna 1.
Altra domanda: siccome c'è una colonna che contiene i codici fiscali, e spesso viene compilata scorrettamente, esiste una formula che mi segnali quali dei codici fiscali è errato?
ps: il file lo avrei anche creato, ma come lo metto qui?
il file lo devi condividere su qualche cloud (drive, Dropbox, eccetera) e mettere qui il link per scaricarlo.
grazie! provvedo
https://drive.google.com/file/d/1PiBsdlu-_YN3C7eKGXOcwqprfVBRvSWN/view?usp=sharing
METODO 1
seleziona colonna A
Dati -> Convalida dati -> Consenti -> Elenco
Origine -> seleziona colonna B
togli la selezione in Elenco nella cella
quindi OK
Dati -> Cerchia dati non validi
questo ti evidenzia i nominativi da mantenere
quelli non cerchiati sono da cancellare
attenzione: i dati devono essere gli stessi, se c'e' uno spazio in fondo o una lettera mancante non lo riconosce come dato uguale (nel tuo esempio succede)
ciao
andrea
METODO 2
evidenzia la colonna A
formattazione condizionale -> nuova regola -> Usa una formula
inserisci questa formula =CERCA.VERT(A1;$B:$B;1;0)>0
scegli un formato -> OK
questo ti evidenzia le celle da cancellare
ciao
andrea
b***@gmail.com
2020-05-16 12:37:27 UTC
Permalink
Post by Andrea.9
Post by Andrea.9
Post by Stryc9
Post by Stryc9
Post by Andrea.9
Post by Stryc9
Post by b***@gmail.com
Post by Stryc9
Salve a tutti
devo confrontare due colonne di nominativi iscritti ad un tipo servizio, son qualche migliaio.
Ogni mese devo controllare quanti degli iscritti a quel service sono sempre attivi e quanti no, per la fatturazione.
Per far ciò devo fare l'estrazione degli iscritti in generale, e confrontare nome nome e evidenziare i cancellati, per escludere gli eventuali abbonati dalla fatturazione.
Io vorrei affiancare le due colonne con i nomi, e far si che excel trovi ed evidenzi i nomi interessati.
come possofare?
grazie mille
La funzione CONFRONTA ti informa se un valore (nel tuo caso appartenente alla lista 1) è presente in una matrice (nel tuo caso la colonna dei nomi della lista 2 ) restituendo la posizione nella lista oppure #ND se non lo trova. In verità non sei stato molto chiaro su quale sottoinsieme delle 2 liste devi estrarre.
Ma Excel per questo tipo di problemi offre attraverso il tool Power Query lo strumento ideale per azioni ripetitive per liste che frequentemente si aggiornano: non devi preoccuparti di aggiornare formule in relazione alla lunghezza degli elenchi. Che versione di Excel hai? Puoi condividere un file con dati fittizi?
Elio
Ciao Elio
Intanto grazie per la risposta
Ho un excel 2019 mso
Allora spiego meglio (o ci provo)
Tutti i mesi mi viene inviato un file per fatturazione, contenente un elenco di iscritti (migliaia) ad un tipo di servizio offerto da una ditta x,
Io devo fare da un anagrafe iscritti a tutti i servizi, l'estrazione generale degli utenti che hanno cancellato l'scrizione in generale, e cercare nel particolare quali di questi utenti che hanno disdetto erano abbonati del servizio di quella ditta.
Praticamente nella colonna 1 ci sarebbe tutto l'elenco degli iscritti al servizio, nella colonna 2 (che inserisco io) l'elenco degli utenti che si sono cancellati in generale da tutti i servizi, nella colonna 3, vuota dovrebbero risultare i nomi presenti nella colonna uno da togliere dalla fatturazione. Oppure evidenziato, o un simbolo, una parola, qualcosa che automaticamente
mi dica quali sono gli utenti da togliere dalla colonna 1.
Altra domanda: siccome c'è una colonna che contiene i codici fiscali, e spesso viene compilata scorrettamente, esiste una formula che mi segnali quali dei codici fiscali è errato?
ps: il file lo avrei anche creato, ma come lo metto qui?
il file lo devi condividere su qualche cloud (drive, Dropbox, eccetera) e mettere qui il link per scaricarlo.
grazie! provvedo
https://drive.google.com/file/d/1PiBsdlu-_YN3C7eKGXOcwqprfVBRvSWN/view?usp=sharing
METODO 1
seleziona colonna A
Dati -> Convalida dati -> Consenti -> Elenco
Origine -> seleziona colonna B
togli la selezione in Elenco nella cella
quindi OK
Dati -> Cerchia dati non validi
questo ti evidenzia i nominativi da mantenere
quelli non cerchiati sono da cancellare
attenzione: i dati devono essere gli stessi, se c'e' uno spazio in fondo o una lettera mancante non lo riconosce come dato uguale (nel tuo esempio succede)
ciao
andrea
METODO 2
evidenzia la colonna A
formattazione condizionale -> nuova regola -> Usa una formula
inserisci questa formula =CERCA.VERT(A1;$B:$B;1;0)>0
scegli un formato -> OK
questo ti evidenzia le celle da cancellare
ciao
andrea
Per file di esempio si intende abitualmente un file con dati fittizi ma con struttura reale. Il tuo esempio non è molto esemplificativo. Comunque spero di aver interpretato correttamente le tue esigenze.
Nel file allegato ( il link in calce) esempio di Power-Query contro formule. Nel foglio Note il tuo ex foglio1 con le tue note. Nel foglio Power_Query la tabella A (intestazione blu) e la tabella B (intestazione arancione) rappresentano le tabelle di dati eventualmente da aggiornare (modifica dati esistenti, aggiunta righe, cancellazione righe); la tabella con intestazione verde la tabella restituita da Power Query. Dopo le modifiche alle tabelle dei dati di origine) l'aggiornamento avviene cliccando con il destro qualsiasi cella della tabella verde e scegliendo Aggiorna dal menu contestuale. Power Query effettua dapprima l'eliminazione di eventuali duplicati e poi restituisce le sole righe della tabella blu che non hanno corrispondenza (in base alla colonna dei nomi) sulla tabella arancione. La corrispondenza deve essere esatta in quanto nomi apparentemente uguali ma in realtà diversi per caratteri invisibili ( per es spazi vuoti all'inizio o fine del nome ) danno risultati errati/inattesi.
Nel foglio Formule l'equivalente con uso di formule con funzione CONFRONTA (stesso problema per la corrispondenza esatta). Con le formule ovviamente non hai l'eliminazione dei duplicati e non hai l'aggiustamento automatico all'ampiezza degli intervalli di ricerca anche se questo ultimo problema può essere ovviato con uso oggetti tabella con la sintassi delle formule per tabelle. Inoltre devi applicare un filtro (valori #ND) ed estrarre manualmente i valori.
Ciao
Elio
https://www.dropbox.com/s/ggsjcymx1m01g5l/PQ_versus_Confronta.xlsx?dl=0
b***@gmail.com
2020-05-16 12:40:17 UTC
Permalink
Post by b***@gmail.com
Post by Andrea.9
Post by Andrea.9
Post by Stryc9
Post by Stryc9
Post by Andrea.9
Post by Stryc9
Post by b***@gmail.com
Post by Stryc9
Salve a tutti
devo confrontare due colonne di nominativi iscritti ad un tipo servizio, son qualche migliaio.
Ogni mese devo controllare quanti degli iscritti a quel service sono sempre attivi e quanti no, per la fatturazione.
Per far ciò devo fare l'estrazione degli iscritti in generale, e confrontare nome nome e evidenziare i cancellati, per escludere gli eventuali abbonati dalla fatturazione.
Io vorrei affiancare le due colonne con i nomi, e far si che excel trovi ed evidenzi i nomi interessati.
come possofare?
grazie mille
La funzione CONFRONTA ti informa se un valore (nel tuo caso appartenente alla lista 1) è presente in una matrice (nel tuo caso la colonna dei nomi della lista 2 ) restituendo la posizione nella lista oppure #ND se non lo trova. In verità non sei stato molto chiaro su quale sottoinsieme delle 2 liste devi estrarre.
Ma Excel per questo tipo di problemi offre attraverso il tool Power Query lo strumento ideale per azioni ripetitive per liste che frequentemente si aggiornano: non devi preoccuparti di aggiornare formule in relazione alla lunghezza degli elenchi. Che versione di Excel hai? Puoi condividere un file con dati fittizi?
Elio
Ciao Elio
Intanto grazie per la risposta
Ho un excel 2019 mso
Allora spiego meglio (o ci provo)
Tutti i mesi mi viene inviato un file per fatturazione, contenente un elenco di iscritti (migliaia) ad un tipo di servizio offerto da una ditta x,
Io devo fare da un anagrafe iscritti a tutti i servizi, l'estrazione generale degli utenti che hanno cancellato l'scrizione in generale, e cercare nel particolare quali di questi utenti che hanno disdetto erano abbonati del servizio di quella ditta.
Praticamente nella colonna 1 ci sarebbe tutto l'elenco degli iscritti al servizio, nella colonna 2 (che inserisco io) l'elenco degli utenti che si sono cancellati in generale da tutti i servizi, nella colonna 3, vuota dovrebbero risultare i nomi presenti nella colonna uno da togliere dalla fatturazione. Oppure evidenziato, o un simbolo, una parola, qualcosa che automaticamente
mi dica quali sono gli utenti da togliere dalla colonna 1.
Altra domanda: siccome c'è una colonna che contiene i codici fiscali, e spesso viene compilata scorrettamente, esiste una formula che mi segnali quali dei codici fiscali è errato?
ps: il file lo avrei anche creato, ma come lo metto qui?
il file lo devi condividere su qualche cloud (drive, Dropbox, eccetera) e mettere qui il link per scaricarlo.
grazie! provvedo
https://drive.google.com/file/d/1PiBsdlu-_YN3C7eKGXOcwqprfVBRvSWN/view?usp=sharing
METODO 1
seleziona colonna A
Dati -> Convalida dati -> Consenti -> Elenco
Origine -> seleziona colonna B
togli la selezione in Elenco nella cella
quindi OK
Dati -> Cerchia dati non validi
questo ti evidenzia i nominativi da mantenere
quelli non cerchiati sono da cancellare
attenzione: i dati devono essere gli stessi, se c'e' uno spazio in fondo o una lettera mancante non lo riconosce come dato uguale (nel tuo esempio succede)
ciao
andrea
METODO 2
evidenzia la colonna A
formattazione condizionale -> nuova regola -> Usa una formula
inserisci questa formula =CERCA.VERT(A1;$B:$B;1;0)>0
scegli un formato -> OK
questo ti evidenzia le celle da cancellare
ciao
andrea
Per file di esempio si intende abitualmente un file con dati fittizi ma con struttura reale. Il tuo esempio non è molto esemplificativo. Comunque spero di aver interpretato correttamente le tue esigenze.
Nel file allegato ( il link in calce) esempio di Power-Query contro formule. Nel foglio Note il tuo ex foglio1 con le tue note. Nel foglio Power_Query la tabella A (intestazione blu) e la tabella B (intestazione arancione) rappresentano le tabelle di dati eventualmente da aggiornare (modifica dati esistenti, aggiunta righe, cancellazione righe); la tabella con intestazione verde la tabella restituita da Power Query. Dopo le modifiche alle tabelle dei dati di origine) l'aggiornamento avviene cliccando con il destro qualsiasi cella della tabella verde e scegliendo Aggiorna dal menu contestuale. Power Query effettua dapprima l'eliminazione di eventuali duplicati e poi restituisce le sole righe della tabella blu che non hanno corrispondenza (in base alla colonna dei nomi) sulla tabella arancione. La corrispondenza deve essere esatta in quanto nomi apparentemente uguali ma in realtà diversi per caratteri invisibili ( per es spazi vuoti all'inizio o fine del nome ) danno risultati errati/inattesi.
Nel foglio Formule l'equivalente con uso di formule con funzione CONFRONTA (stesso problema per la corrispondenza esatta). Con le formule ovviamente non hai l'eliminazione dei duplicati e non hai l'aggiustamento automatico all'ampiezza degli intervalli di ricerca anche se questo ultimo problema può essere ovviato con uso oggetti tabella con la sintassi delle formule per tabelle. Inoltre devi applicare un filtro (valori #ND) ed estrarre manualmente i valori.
Ciao
Elio
https://www.dropbox.com/s/ggsjcymx1m01g5l/PQ_versus_Confronta.xlsx?dl=0
P.S.
Per il controllo del codice fiscale è necessaria una macro vba o una funzione definita dall'utente sempre in vba.
Elio
casanmaner
2020-05-16 12:48:39 UTC
Permalink
Post by b***@gmail.com
P.S.
Per il controllo del codice fiscale è necessaria una macro vba o una funzione definita dall'utente sempre in vba.
Elio
Io uso queste per verificare il carattere finale di controllo di codici fiscali e partite iva (che dovrebbe andare bene anche per i codifi fiscali degli enti non commerciali):


Public Function FCarattereControlloCFPF(cf As String) As Boolean
Dim i As Long
Dim Car As Variant
Dim Num As Variant
Dim ConvCarPari As Variant
Dim ConvCarDisp As Variant
Dim X As String
Dim Y As Long
Dim TotPari As Long
Dim TotDisp As Long
Car = Array("A", "B", "C", "D", "E", "F", "G", "H", _
"I", "J", "K", "L", "M", "N", "O", _
"P", "Q", "R", "S", "T", "U", "V", "W", _
"X", "Y", "Z")
Num = Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
ConvCarPari = Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, _
10, 11, 12, 13, 14, 15, 16, 17, _
18, 19, 20, 21, 22, 23, 24, 25)
ConvCarDisp = Array(1, 0, 5, 7, 9, 13, 15, 17, 19, 21, _
2, 4, 18, 20, 11, 3, 6, 8, 12, 14, _
16, 10, 22, 25, 24, 23)
If Len(cf) <> 16 Then FCarattereControlloCFPF = False: Exit Function
X = Empty
Y = 0
TotPari = 0
TotDisp = 0
For i = 2 To 14 Step 2
X = Mid(cf, i, 1)
If IsNumeric(X) Then
Y = ConvCarPari(Application.Match(CInt(X), Num, 0) - 1)
ElseIf Not IsNumeric(X) Then
Y = ConvCarPari(Application.Match(X, Car, 0) - 1)
End If
TotPari = TotPari + Y
Next i

For i = 1 To 15 Step 2
X = Mid(cf, i, 1)
If IsNumeric(X) Then
Y = ConvCarDisp(Application.Match(CInt(X), Num, 0) - 1)
ElseIf Not IsNumeric(X) Then
Y = ConvCarDisp(Application.Match(X, Car, 0) - 1)
End If
TotDisp = TotDisp + Y
Next i
CarattereControlloCodiceFiscale = Car((TotPari + TotDisp) Mod 26)
If CarattereControlloCodiceFiscale = UCase(Right(cf, 1)) Then
FCarattereControlloCFPF = True
Else
FCarattereControlloCFPF = False
End If
End Function

Public Function FNumeroControlloPI(PI As String) As Boolean
Dim i As Long
Dim TotNdisp As Long
Dim Npari2 As String
Dim NPari2S As Long
Dim TotNpari As Long
Dim Tot As Long
If Len(PI) <> 11 Then FNumeroControlloPI = False: Exit Function
For i = 1 To 10 Step 2
TotNdisp = TotNdisp + CInt(Mid(PI, i, 1))
Next i
For i = 2 To 10 Step 2
Npari2 = CStr(2 * CInt(Mid(PI, i, 1)))
If CInt(Npari2) < 10 Then
TotNpari = TotNpari + CInt(Npari2)
Else
NPari2S = CInt(Left(Npari2, 1)) + CInt(Right(Npari2, 1))
TotNpari = TotNpari + CInt(NPari2S)
End If
Next i
Tot = TotNdisp + TotNpari
NumeroControlloPartitaIva = CInt(Right(10 - Right(Tot, 1), 1))
If NumeroControlloPartitaIva = CInt(Right(PI, 1)) Then
FNumeroControlloPI = True
Else
FNumeroControlloPI = False
End If
End Function
b***@gmail.com
2020-05-16 12:58:23 UTC
Permalink
Post by casanmaner
Post by b***@gmail.com
P.S.
Per il controllo del codice fiscale è necessaria una macro vba o una funzione definita dall'utente sempre in vba.
Elio
Public Function FCarattereControlloCFPF(cf As String) As Boolean
Dim i As Long
Dim Car As Variant
Dim Num As Variant
Dim ConvCarPari As Variant
Dim ConvCarDisp As Variant
Dim X As String
Dim Y As Long
Dim TotPari As Long
Dim TotDisp As Long
Car = Array("A", "B", "C", "D", "E", "F", "G", "H", _
"I", "J", "K", "L", "M", "N", "O", _
"P", "Q", "R", "S", "T", "U", "V", "W", _
"X", "Y", "Z")
Num = Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
ConvCarPari = Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, _
10, 11, 12, 13, 14, 15, 16, 17, _
18, 19, 20, 21, 22, 23, 24, 25)
ConvCarDisp = Array(1, 0, 5, 7, 9, 13, 15, 17, 19, 21, _
2, 4, 18, 20, 11, 3, 6, 8, 12, 14, _
16, 10, 22, 25, 24, 23)
If Len(cf) <> 16 Then FCarattereControlloCFPF = False: Exit Function
X = Empty
Y = 0
TotPari = 0
TotDisp = 0
For i = 2 To 14 Step 2
X = Mid(cf, i, 1)
If IsNumeric(X) Then
Y = ConvCarPari(Application.Match(CInt(X), Num, 0) - 1)
ElseIf Not IsNumeric(X) Then
Y = ConvCarPari(Application.Match(X, Car, 0) - 1)
End If
TotPari = TotPari + Y
Next i
For i = 1 To 15 Step 2
X = Mid(cf, i, 1)
If IsNumeric(X) Then
Y = ConvCarDisp(Application.Match(CInt(X), Num, 0) - 1)
ElseIf Not IsNumeric(X) Then
Y = ConvCarDisp(Application.Match(X, Car, 0) - 1)
End If
TotDisp = TotDisp + Y
Next i
CarattereControlloCodiceFiscale = Car((TotPari + TotDisp) Mod 26)
If CarattereControlloCodiceFiscale = UCase(Right(cf, 1)) Then
FCarattereControlloCFPF = True
Else
FCarattereControlloCFPF = False
End If
End Function
Public Function FNumeroControlloPI(PI As String) As Boolean
Dim i As Long
Dim TotNdisp As Long
Dim Npari2 As String
Dim NPari2S As Long
Dim TotNpari As Long
Dim Tot As Long
If Len(PI) <> 11 Then FNumeroControlloPI = False: Exit Function
For i = 1 To 10 Step 2
TotNdisp = TotNdisp + CInt(Mid(PI, i, 1))
Next i
For i = 2 To 10 Step 2
Npari2 = CStr(2 * CInt(Mid(PI, i, 1)))
If CInt(Npari2) < 10 Then
TotNpari = TotNpari + CInt(Npari2)
Else
NPari2S = CInt(Left(Npari2, 1)) + CInt(Right(Npari2, 1))
TotNpari = TotNpari + CInt(NPari2S)
End If
Next i
Tot = TotNdisp + TotNpari
NumeroControlloPartitaIva = CInt(Right(10 - Right(Tot, 1), 1))
If NumeroControlloPartitaIva = CInt(Right(PI, 1)) Then
FNumeroControlloPI = True
Else
FNumeroControlloPI = False
End If
End Function
Io ho da tempo usato questo di Federico Luciani:
Public Function CheckCodFiscale(CFis As String) As Boolean
'Autore: Federico Luciani
'Accetta: CFis = Codice fiscale da verificare
'Restituisce: true se il Codice fiscale è corretto
If Len(CFis) <> 16 Then
CheckCodFiscale = False
Exit Function
End If
Dim I As Integer, P As Integer, D As Integer
Dim SumDisp As Integer, SumPari As Integer
Dim SumTot As Integer, Check As String
Dim Resto(1 To 26) As String
Resto(1) = "A"
Resto(2) = "B"
Resto(3) = "C"
Resto(4) = "D"
Resto(5) = "E"
Resto(6) = "F"
Resto(7) = "G"
Resto(8) = "H"
Resto(9) = "I"
Resto(10) = "J"
Resto(11) = "K"
Resto(12) = "L"
Resto(13) = "M"
Resto(14) = "N"
Resto(15) = "O"
Resto(16) = "P"
Resto(17) = "Q"
Resto(18) = "R"
Resto(19) = "S"
Resto(20) = "T"
Resto(21) = "U"
Resto(22) = "V"
Resto(23) = "W"
Resto(24) = "X"
Resto(25) = "Y"
Resto(26) = "Z"
For I = 2 To 14 Step 2
Select Case Mid$(CFis, I, 1)
Case "0": P = 0
Case "1": P = 1
Case "2": P = 2
Case "3": P = 3
Case "4": P = 4
Case "5": P = 5
Case "6": P = 6
Case "7": P = 7
Case "8": P = 8
Case "9": P = 9
Case "A": P = 0
Case "B": P = 1
Case "C": P = 2
Case "D": P = 3
Case "E": P = 4
Case "F": P = 5
Case "G": P = 6
Case "H": P = 7
Case "I": P = 8
Case "J": P = 9
Case "K": P = 10
Case "L": P = 11
Case "M": P = 12
Case "N": P = 13
Case "O": P = 14
Case "P": P = 15
Case "Q": P = 16
Case "R": P = 17
Case "S": P = 18
Case "T": P = 19
Case "U": P = 20
Case "V": P = 21
Case "W": P = 22
Case "X": P = 23
Case "Y": P = 24
Case "Z": P = 25
End Select
SumPari = SumPari + P
Next I
For I = 1 To 15 Step 2
Select Case Mid$(CFis, I, 1)
Case "0": D = 1
Case "1": D = 0
Case "2": D = 5
Case "3": D = 7
Case "4": D = 9
Case "5": D = 13
Case "6": D = 15
Case "7": D = 17
Case "8": D = 19
Case "9": D = 21
Case "A": D = 1
Case "B": D = 0
Case "C": D = 5
Case "D": D = 7
Case "E": D = 9
Case "F": D = 13
Case "G": D = 15
Case "H": D = 17
Case "I": D = 19
Case "J": D = 21
Case "K": D = 2
Case "L": D = 4
Case "M": D = 18
Case "N": D = 20
Case "O": D = 11
Case "P": D = 3
Case "Q": D = 6
Case "R": D = 8
Case "S": D = 12
Case "T": D = 14
Case "U": D = 16
Case "V": D = 10
Case "W": D = 22
Case "X": D = 25
Case "Y": D = 24
Case "Z": D = 23
End Select
SumDisp = SumDisp + D
Next I
SumTot = SumPari + SumDisp
Check = Resto((SumTot Mod 26) + 1)
If Check = UCase$(Right(CFis, 1)) Then
CheckCodFiscale = True
Else
CheckCodFiscale = False
End If
End Function
Stryc9
2020-05-16 13:20:37 UTC
Permalink
Post by b***@gmail.com
Post by casanmaner
Post by b***@gmail.com
P.S.
Per il controllo del codice fiscale è necessaria una macro vba o una funzione definita dall'utente sempre in vba.
Elio
Public Function FCarattereControlloCFPF(cf As String) As Boolean
Dim i As Long
Dim Car As Variant
Dim Num As Variant
Dim ConvCarPari As Variant
Dim ConvCarDisp As Variant
Dim X As String
Dim Y As Long
Dim TotPari As Long
Dim TotDisp As Long
Car = Array("A", "B", "C", "D", "E", "F", "G", "H", _
"I", "J", "K", "L", "M", "N", "O", _
"P", "Q", "R", "S", "T", "U", "V", "W", _
"X", "Y", "Z")
Num = Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
ConvCarPari = Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, _
10, 11, 12, 13, 14, 15, 16, 17, _
18, 19, 20, 21, 22, 23, 24, 25)
ConvCarDisp = Array(1, 0, 5, 7, 9, 13, 15, 17, 19, 21, _
2, 4, 18, 20, 11, 3, 6, 8, 12, 14, _
16, 10, 22, 25, 24, 23)
If Len(cf) <> 16 Then FCarattereControlloCFPF = False: Exit Function
X = Empty
Y = 0
TotPari = 0
TotDisp = 0
For i = 2 To 14 Step 2
X = Mid(cf, i, 1)
If IsNumeric(X) Then
Y = ConvCarPari(Application.Match(CInt(X), Num, 0) - 1)
ElseIf Not IsNumeric(X) Then
Y = ConvCarPari(Application.Match(X, Car, 0) - 1)
End If
TotPari = TotPari + Y
Next i
For i = 1 To 15 Step 2
X = Mid(cf, i, 1)
If IsNumeric(X) Then
Y = ConvCarDisp(Application.Match(CInt(X), Num, 0) - 1)
ElseIf Not IsNumeric(X) Then
Y = ConvCarDisp(Application.Match(X, Car, 0) - 1)
End If
TotDisp = TotDisp + Y
Next i
CarattereControlloCodiceFiscale = Car((TotPari + TotDisp) Mod 26)
If CarattereControlloCodiceFiscale = UCase(Right(cf, 1)) Then
FCarattereControlloCFPF = True
Else
FCarattereControlloCFPF = False
End If
End Function
Public Function FNumeroControlloPI(PI As String) As Boolean
Dim i As Long
Dim TotNdisp As Long
Dim Npari2 As String
Dim NPari2S As Long
Dim TotNpari As Long
Dim Tot As Long
If Len(PI) <> 11 Then FNumeroControlloPI = False: Exit Function
For i = 1 To 10 Step 2
TotNdisp = TotNdisp + CInt(Mid(PI, i, 1))
Next i
For i = 2 To 10 Step 2
Npari2 = CStr(2 * CInt(Mid(PI, i, 1)))
If CInt(Npari2) < 10 Then
TotNpari = TotNpari + CInt(Npari2)
Else
NPari2S = CInt(Left(Npari2, 1)) + CInt(Right(Npari2, 1))
TotNpari = TotNpari + CInt(NPari2S)
End If
Next i
Tot = TotNdisp + TotNpari
NumeroControlloPartitaIva = CInt(Right(10 - Right(Tot, 1), 1))
If NumeroControlloPartitaIva = CInt(Right(PI, 1)) Then
FNumeroControlloPI = True
Else
FNumeroControlloPI = False
End If
End Function
Public Function CheckCodFiscale(CFis As String) As Boolean
'Autore: Federico Luciani
'Accetta: CFis = Codice fiscale da verificare
'Restituisce: true se il Codice fiscale è corretto
If Len(CFis) <> 16 Then
CheckCodFiscale = False
Exit Function
End If
Dim I As Integer, P As Integer, D As Integer
Dim SumDisp As Integer, SumPari As Integer
Dim SumTot As Integer, Check As String
Dim Resto(1 To 26) As String
Resto(1) = "A"
Resto(2) = "B"
Resto(3) = "C"
Resto(4) = "D"
Resto(5) = "E"
Resto(6) = "F"
Resto(7) = "G"
Resto(8) = "H"
Resto(9) = "I"
Resto(10) = "J"
Resto(11) = "K"
Resto(12) = "L"
Resto(13) = "M"
Resto(14) = "N"
Resto(15) = "O"
Resto(16) = "P"
Resto(17) = "Q"
Resto(18) = "R"
Resto(19) = "S"
Resto(20) = "T"
Resto(21) = "U"
Resto(22) = "V"
Resto(23) = "W"
Resto(24) = "X"
Resto(25) = "Y"
Resto(26) = "Z"
For I = 2 To 14 Step 2
Select Case Mid$(CFis, I, 1)
Case "0": P = 0
Case "1": P = 1
Case "2": P = 2
Case "3": P = 3
Case "4": P = 4
Case "5": P = 5
Case "6": P = 6
Case "7": P = 7
Case "8": P = 8
Case "9": P = 9
Case "A": P = 0
Case "B": P = 1
Case "C": P = 2
Case "D": P = 3
Case "E": P = 4
Case "F": P = 5
Case "G": P = 6
Case "H": P = 7
Case "I": P = 8
Case "J": P = 9
Case "K": P = 10
Case "L": P = 11
Case "M": P = 12
Case "N": P = 13
Case "O": P = 14
Case "P": P = 15
Case "Q": P = 16
Case "R": P = 17
Case "S": P = 18
Case "T": P = 19
Case "U": P = 20
Case "V": P = 21
Case "W": P = 22
Case "X": P = 23
Case "Y": P = 24
Case "Z": P = 25
End Select
SumPari = SumPari + P
Next I
For I = 1 To 15 Step 2
Select Case Mid$(CFis, I, 1)
Case "0": D = 1
Case "1": D = 0
Case "2": D = 5
Case "3": D = 7
Case "4": D = 9
Case "5": D = 13
Case "6": D = 15
Case "7": D = 17
Case "8": D = 19
Case "9": D = 21
Case "A": D = 1
Case "B": D = 0
Case "C": D = 5
Case "D": D = 7
Case "E": D = 9
Case "F": D = 13
Case "G": D = 15
Case "H": D = 17
Case "I": D = 19
Case "J": D = 21
Case "K": D = 2
Case "L": D = 4
Case "M": D = 18
Case "N": D = 20
Case "O": D = 11
Case "P": D = 3
Case "Q": D = 6
Case "R": D = 8
Case "S": D = 12
Case "T": D = 14
Case "U": D = 16
Case "V": D = 10
Case "W": D = 22
Case "X": D = 25
Case "Y": D = 24
Case "Z": D = 23
End Select
SumDisp = SumDisp + D
Next I
SumTot = SumPari + SumDisp
Check = Resto((SumTot Mod 26) + 1)
If Check = UCase$(Right(CFis, 1)) Then
CheckCodFiscale = True
Else
CheckCodFiscale = False
End If
End Function
Per ambedue le macro:
scusate la caproneria, ma dove le inserisco? sull'etichetta della colonna dei codici fiscali?
b***@gmail.com
2020-05-16 17:02:35 UTC
Permalink
Domanda: nella tabella verde vanno a finire quelli che sono ancora presenti >>(se non erro la sintassi della tabella è InAnonB, cioè i presenti nella >colonna A che non sono nella colonna B. Se invece volessi scrivere InAinB lo >posso fare?
Non è una sintassi. È una semplice denominazione di colonna. Non informa Power Query su cosa deve fare.
Sul TAB Dati nel gruppo Query e connessioni, clicca il pulsante Query e connessioni. Sulla destra della finestra Excel appare un nuovo pannello. Sono elencate 3 query. Le prime 2 caricano in memoria RAM le prime 2 tabelle di origine (in gergo cosiddetta solo connessione senza carico sul foglio di lavoro). La terza è un Join tra le prime 2 tabelle. Fai doppio click sulla terza Query denominata InA_NonInB (anche questo è un semplice nome). Si apre la finestra dell'editor di Power Query. Sulla destra hai il pannello dei passaggi applicati. Il primo esegue il Join tra le 2 tabelle con caricamento dei dati sul foglio di lavoro. Se clicchi su questo primo passaggio la barra della formula ti mostra cosa ha scritto il registratore di Power Query in risposta ai comandi dell'interfaccia utente (sono formule con sintassi completamente diversa da quella delle formule sul foglio di lavoro). Puoi modificare in questa sede modificando il codice. Oppure puoi rifare il passaggio all'interfaccia utente. Per fare ciò clicca sul primo passaggio applicato chiamato Origine. Sulla destra c'è una sorta di ruota. Clicca su questa. Avrai una finestra per gestire il Join tra le tabelle. Scegli quello
che fa al tuo caso e conferma con OK. Osserva la diversa sintassi della formula.
Qui il link ad una immagine screen-shot
Loading Image...

Se vuoi utilizzare Power Query (altamente consigliato per chi ha la tua versione di Excel e per il problema specifico). Incomincia a convertire in Tabella i tuoi intervalli di dati (TAB Inserisci finestra principale di Excel; gruppo Tabelle ) in quanto Power Query lavora con le tabelle.
Se sei interessato. Ti posso aiutare nel costruire il tuo applicativo.

Per il VBA: Devi inserire i codici in un modulo standard del progetto VBA (ALT F11; nella finestra VBA dal menu inserisci scegli modulo. Ora nell'albero degli oggetti compare modulo1; lo apri con doppio click e incolli il codice nella finestra codice. Chiudi la finestra VBA per tornare ad Excel (oppure rifai ALT + F11). Ora supponendo che in A1 hai un codice fiscale la formula = CheckCodFiscale(A1) ti fa il controllo
Stryc9
2020-05-17 05:44:00 UTC
Permalink
Post by b***@gmail.com
Domanda: nella tabella verde vanno a finire quelli che sono ancora presenti >>(se non erro la sintassi della tabella è InAnonB, cioè i presenti nella >colonna A che non sono nella colonna B. Se invece volessi scrivere InAinB lo >posso fare?
Non è una sintassi. È una semplice denominazione di colonna. Non informa Power Query su cosa deve fare.
Sul TAB Dati nel gruppo Query e connessioni, clicca il pulsante Query e connessioni. Sulla destra della finestra Excel appare un nuovo pannello. Sono elencate 3 query. Le prime 2 caricano in memoria RAM le prime 2 tabelle di origine (in gergo cosiddetta solo connessione senza carico sul foglio di lavoro). La terza è un Join tra le prime 2 tabelle. Fai doppio click sulla terza Query denominata InA_NonInB (anche questo è un semplice nome). Si apre la finestra dell'editor di Power Query. Sulla destra hai il pannello dei passaggi applicati. Il primo esegue il Join tra le 2 tabelle con caricamento dei dati sul foglio di lavoro. Se clicchi su questo primo passaggio la barra della formula ti mostra cosa ha scritto il registratore di Power Query in risposta ai comandi dell'interfaccia utente (sono formule con sintassi completamente diversa da quella delle formule sul foglio di lavoro). Puoi modificare in questa sede modificando il codice. Oppure puoi rifare il passaggio all'interfaccia utente. Per fare ciò clicca sul primo passaggio applicato chiamato Origine. Sulla destra c'è una sorta di ruota. Clicca su questa. Avrai una finestra per gestire il Join tra le tabelle. Scegli quello
che fa al tuo caso e conferma con OK. Osserva la diversa sintassi della formula.
Qui il link ad una immagine screen-shot
https://www.dropbox.com/s/wx1dtpy02k7ua6y/Ashampoo_Snap_sabato%2016%20maggio%202020_18h17m16s_002_.png?dl=0
Se vuoi utilizzare Power Query (altamente consigliato per chi ha la tua versione di Excel e per il problema specifico). Incomincia a convertire in Tabella i tuoi intervalli di dati (TAB Inserisci finestra principale di Excel; gruppo Tabelle ) in quanto Power Query lavora con le tabelle.
Se sei interessato. Ti posso aiutare nel costruire il tuo applicativo.
Per il VBA: Devi inserire i codici in un modulo standard del progetto VBA (ALT F11; nella finestra VBA dal menu inserisci scegli modulo. Ora nell'albero degli oggetti compare modulo1; lo apri con doppio click e incolli il codice nella finestra codice. Chiudi la finestra VBA per tornare ad Excel (oppure rifai ALT + F11). Ora supponendo che in A1 hai un codice fiscale la formula = CheckCodFiscale(A1) ti fa il controllo
Intanto grazie mille per la tua offerta. E' da poco che mi sono affacciata al mondo excel, non avendone praticamemte mai avuta la necessità di utilizzo.
Power query credo sia, pur non conoscendolo minimamente, uno strumento eccezionale e praticissimo. Tutto sta, per me a metabolizzarlo.
Stryc9
2020-05-18 09:26:30 UTC
Permalink
Post by Stryc9
Post by b***@gmail.com
Domanda: nella tabella verde vanno a finire quelli che sono ancora presenti >>(se non erro la sintassi della tabella è InAnonB, cioè i presenti nella >colonna A che non sono nella colonna B. Se invece volessi scrivere InAinB lo >posso fare?
Non è una sintassi. È una semplice denominazione di colonna. Non informa Power Query su cosa deve fare.
Sul TAB Dati nel gruppo Query e connessioni, clicca il pulsante Query e connessioni. Sulla destra della finestra Excel appare un nuovo pannello. Sono elencate 3 query. Le prime 2 caricano in memoria RAM le prime 2 tabelle di origine (in gergo cosiddetta solo connessione senza carico sul foglio di lavoro). La terza è un Join tra le prime 2 tabelle. Fai doppio click sulla terza Query denominata InA_NonInB (anche questo è un semplice nome). Si apre la finestra dell'editor di Power Query. Sulla destra hai il pannello dei passaggi applicati. Il primo esegue il Join tra le 2 tabelle con caricamento dei dati sul foglio di lavoro. Se clicchi su questo primo passaggio la barra della formula ti mostra cosa ha scritto il registratore di Power Query in risposta ai comandi dell'interfaccia utente (sono formule con sintassi completamente diversa da quella delle formule sul foglio di lavoro). Puoi modificare in questa sede modificando il codice. Oppure puoi rifare il passaggio all'interfaccia utente. Per fare ciò clicca sul primo passaggio applicato chiamato Origine. Sulla destra c'è una sorta di ruota. Clicca su questa. Avrai una finestra per gestire il Join tra le tabelle. Scegli quello
che fa al tuo caso e conferma con OK. Osserva la diversa sintassi della formula.
Qui il link ad una immagine screen-shot
https://www.dropbox.com/s/wx1dtpy02k7ua6y/Ashampoo_Snap_sabato%2016%20maggio%202020_18h17m16s_002_.png?dl=0
Se vuoi utilizzare Power Query (altamente consigliato per chi ha la tua versione di Excel e per il problema specifico). Incomincia a convertire in Tabella i tuoi intervalli di dati (TAB Inserisci finestra principale di Excel; gruppo Tabelle ) in quanto Power Query lavora con le tabelle.
Se sei interessato. Ti posso aiutare nel costruire il tuo applicativo.
Per il VBA: Devi inserire i codici in un modulo standard del progetto VBA (ALT F11; nella finestra VBA dal menu inserisci scegli modulo. Ora nell'albero degli oggetti compare modulo1; lo apri con doppio click e incolli il codice nella finestra codice. Chiudi la finestra VBA per tornare ad Excel (oppure rifai ALT + F11). Ora supponendo che in A1 hai un codice fiscale la formula = CheckCodFiscale(A1) ti fa il controllo
Intanto grazie mille per la tua offerta. E' da poco che mi sono affacciata al mondo excel, non avendone praticamemte mai avuta la necessità di utilizzo.
Power query credo sia, pur non conoscendolo minimamente, uno strumento eccezionale e praticissimo. Tutto sta, per me a metabolizzarlo.
dato l'altissimo livello di caprosità, avrei necessità del tuo aiuto. Come posso contattarti?
b***@gmail.com
2020-05-18 12:00:51 UTC
Permalink
Post by Stryc9
Post by Stryc9
Post by b***@gmail.com
Domanda: nella tabella verde vanno a finire quelli che sono ancora presenti >>(se non erro la sintassi della tabella è InAnonB, cioè i presenti nella >colonna A che non sono nella colonna B. Se invece volessi scrivere InAinB lo >posso fare?
Non è una sintassi. È una semplice denominazione di colonna. Non informa Power Query su cosa deve fare.
Sul TAB Dati nel gruppo Query e connessioni, clicca il pulsante Query e connessioni. Sulla destra della finestra Excel appare un nuovo pannello. Sono elencate 3 query. Le prime 2 caricano in memoria RAM le prime 2 tabelle di origine (in gergo cosiddetta solo connessione senza carico sul foglio di lavoro). La terza è un Join tra le prime 2 tabelle. Fai doppio click sulla terza Query denominata InA_NonInB (anche questo è un semplice nome). Si apre la finestra dell'editor di Power Query. Sulla destra hai il pannello dei passaggi applicati. Il primo esegue il Join tra le 2 tabelle con caricamento dei dati sul foglio di lavoro. Se clicchi su questo primo passaggio la barra della formula ti mostra cosa ha scritto il registratore di Power Query in risposta ai comandi dell'interfaccia utente (sono formule con sintassi completamente diversa da quella delle formule sul foglio di lavoro). Puoi modificare in questa sede modificando il codice. Oppure puoi rifare il passaggio all'interfaccia utente. Per fare ciò clicca sul primo passaggio applicato chiamato Origine. Sulla destra c'è una sorta di ruota. Clicca su questa. Avrai una finestra per gestire il Join tra le tabelle. Scegli quello
che fa al tuo caso e conferma con OK. Osserva la diversa sintassi della formula.
Qui il link ad una immagine screen-shot
https://www.dropbox.com/s/wx1dtpy02k7ua6y/Ashampoo_Snap_sabato%2016%20maggio%202020_18h17m16s_002_.png?dl=0
Se vuoi utilizzare Power Query (altamente consigliato per chi ha la tua versione di Excel e per il problema specifico). Incomincia a convertire in Tabella i tuoi intervalli di dati (TAB Inserisci finestra principale di Excel; gruppo Tabelle ) in quanto Power Query lavora con le tabelle.
Se sei interessato. Ti posso aiutare nel costruire il tuo applicativo.
Per il VBA: Devi inserire i codici in un modulo standard del progetto VBA (ALT F11; nella finestra VBA dal menu inserisci scegli modulo. Ora nell'albero degli oggetti compare modulo1; lo apri con doppio click e incolli il codice nella finestra codice. Chiudi la finestra VBA per tornare ad Excel (oppure rifai ALT + F11). Ora supponendo che in A1 hai un codice fiscale la formula = CheckCodFiscale(A1) ti fa il controllo
Intanto grazie mille per la tua offerta. E' da poco che mi sono affacciata al mondo excel, non avendone praticamemte mai avuta la necessità di utilizzo.
Power query credo sia, pur non conoscendolo minimamente, uno strumento eccezionale e praticissimo. Tutto sta, per me a metabolizzarlo.
dato l'altissimo livello di caprosità, avrei necessità del tuo aiuto. Come posso contattarti?
buonocoreeliochiocciolagmailpuntocom
Stryc9
2020-05-16 13:19:09 UTC
Permalink
Post by b***@gmail.com
Post by Andrea.9
Post by Andrea.9
Post by Stryc9
Post by Stryc9
Post by Andrea.9
Post by Stryc9
Post by b***@gmail.com
Post by Stryc9
Salve a tutti
devo confrontare due colonne di nominativi iscritti ad un tipo servizio, son qualche migliaio.
Ogni mese devo controllare quanti degli iscritti a quel service sono sempre attivi e quanti no, per la fatturazione.
Per far ciò devo fare l'estrazione degli iscritti in generale, e confrontare nome nome e evidenziare i cancellati, per escludere gli eventuali abbonati dalla fatturazione.
Io vorrei affiancare le due colonne con i nomi, e far si che excel trovi ed evidenzi i nomi interessati.
come possofare?
grazie mille
La funzione CONFRONTA ti informa se un valore (nel tuo caso appartenente alla lista 1) è presente in una matrice (nel tuo caso la colonna dei nomi della lista 2 ) restituendo la posizione nella lista oppure #ND se non lo trova. In verità non sei stato molto chiaro su quale sottoinsieme delle 2 liste devi estrarre.
Ma Excel per questo tipo di problemi offre attraverso il tool Power Query lo strumento ideale per azioni ripetitive per liste che frequentemente si aggiornano: non devi preoccuparti di aggiornare formule in relazione alla lunghezza degli elenchi. Che versione di Excel hai? Puoi condividere un file con dati fittizi?
Elio
Ciao Elio
Intanto grazie per la risposta
Ho un excel 2019 mso
Allora spiego meglio (o ci provo)
Tutti i mesi mi viene inviato un file per fatturazione, contenente un elenco di iscritti (migliaia) ad un tipo di servizio offerto da una ditta x,
Io devo fare da un anagrafe iscritti a tutti i servizi, l'estrazione generale degli utenti che hanno cancellato l'scrizione in generale, e cercare nel particolare quali di questi utenti che hanno disdetto erano abbonati del servizio di quella ditta.
Praticamente nella colonna 1 ci sarebbe tutto l'elenco degli iscritti al servizio, nella colonna 2 (che inserisco io) l'elenco degli utenti che si sono cancellati in generale da tutti i servizi, nella colonna 3, vuota dovrebbero risultare i nomi presenti nella colonna uno da togliere dalla fatturazione. Oppure evidenziato, o un simbolo, una parola, qualcosa che automaticamente
mi dica quali sono gli utenti da togliere dalla colonna 1.
Altra domanda: siccome c'è una colonna che contiene i codici fiscali, e spesso viene compilata scorrettamente, esiste una formula che mi segnali quali dei codici fiscali è errato?
ps: il file lo avrei anche creato, ma come lo metto qui?
il file lo devi condividere su qualche cloud (drive, Dropbox, eccetera) e mettere qui il link per scaricarlo.
grazie! provvedo
https://drive.google.com/file/d/1PiBsdlu-_YN3C7eKGXOcwqprfVBRvSWN/view?usp=sharing
METODO 1
seleziona colonna A
Dati -> Convalida dati -> Consenti -> Elenco
Origine -> seleziona colonna B
togli la selezione in Elenco nella cella
quindi OK
Dati -> Cerchia dati non validi
questo ti evidenzia i nominativi da mantenere
quelli non cerchiati sono da cancellare
attenzione: i dati devono essere gli stessi, se c'e' uno spazio in fondo o una lettera mancante non lo riconosce come dato uguale (nel tuo esempio succede)
ciao
andrea
METODO 2
evidenzia la colonna A
formattazione condizionale -> nuova regola -> Usa una formula
inserisci questa formula =CERCA.VERT(A1;$B:$B;1;0)>0
scegli un formato -> OK
questo ti evidenzia le celle da cancellare
ciao
andrea
Per file di esempio si intende abitualmente un file con dati fittizi ma con struttura reale. Il tuo esempio non è molto esemplificativo. Comunque spero di aver interpretato correttamente le tue esigenze.
Nel file allegato ( il link in calce) esempio di Power-Query contro formule. Nel foglio Note il tuo ex foglio1 con le tue note. Nel foglio Power_Query la tabella A (intestazione blu) e la tabella B (intestazione arancione) rappresentano le tabelle di dati eventualmente da aggiornare (modifica dati esistenti, aggiunta righe, cancellazione righe); la tabella con intestazione verde la tabella restituita da Power Query. Dopo le modifiche alle tabelle dei dati di origine) l'aggiornamento avviene cliccando con il destro qualsiasi cella della tabella verde e scegliendo Aggiorna dal menu contestuale. Power Query effettua dapprima l'eliminazione di eventuali duplicati e poi restituisce le sole righe della tabella blu che non hanno corrispondenza (in base alla colonna dei nomi) sulla tabella arancione. La corrispondenza deve essere esatta in quanto nomi apparentemente uguali ma in realtà diversi per caratteri invisibili ( per es spazi vuoti all'inizio o fine del nome ) danno risultati errati/inattesi.
Nel foglio Formule l'equivalente con uso di formule con funzione CONFRONTA (stesso problema per la corrispondenza esatta). Con le formule ovviamente non hai l'eliminazione dei duplicati e non hai l'aggiustamento automatico all'ampiezza degli intervalli di ricerca anche se questo ultimo problema può essere ovviato con uso oggetti tabella con la sintassi delle formule per tabelle. Inoltre devi applicare un filtro (valori #ND) ed estrarre manualmente i valori.
Ciao
Elio
https://www.dropbox.com/s/ggsjcymx1m01g5l/PQ_versus_Confronta.xlsx?dl=0
Wow, power query non la conoscevo affatto.

Domanda: nella tabella verde vanno a finire quelli che sono ancora presenti (se non erro la sintassi della tabella è InAnonB, cioè i presenti nella colonna A che non sono nella colonna B. Se invece volessi scrivere InAinB lo posso fare?
Bruno Campanini
2020-05-18 13:56:55 UTC
Permalink
Post by Stryc9
Salve a tutti
devo confrontare due colonne di nominativi iscritti ad un tipo servizio, son
qualche migliaio. Ogni mese devo controllare quanti degli iscritti a quel
service sono sempre attivi e quanti no, per la fatturazione.
Per far ciò devo fare l'estrazione degli iscritti in generale, e confrontare
nome nome e evidenziare i cancellati, per escludere gli eventuali abbonati
dalla fatturazione.
Io vorrei affiancare le due colonne con i nomi, e far si che excel trovi ed
evidenzi i nomi interessati.
come possofare?
Così è troppo facile?
============================
Public Sub Esempio()
Dim R(1 To 2) As Range, i, j

Set R(1) = Range([Foglio1!A2], [Foglio1!A2].End(xlDown))
Set R(2) = Range([Foglio1!B2], [Foglio1!B2].End(xlDown))

For Each j In R(2)
For Each i In R(1)
If i = j Then
i.Delete
End If
Next
Next

End Sub
===================================

Bruno
b***@gmail.com
2020-05-18 15:08:47 UTC
Permalink
Post by Bruno Campanini
Post by Stryc9
Salve a tutti
devo confrontare due colonne di nominativi iscritti ad un tipo servizio, son
qualche migliaio. Ogni mese devo controllare quanti degli iscritti a quel
service sono sempre attivi e quanti no, per la fatturazione.
Per far ciò devo fare l'estrazione degli iscritti in generale, e confrontare
nome nome e evidenziare i cancellati, per escludere gli eventuali abbonati
dalla fatturazione.
Io vorrei affiancare le due colonne con i nomi, e far si che excel trovi ed
evidenzi i nomi interessati.
come possofare?
Così è troppo facile?
============================
Public Sub Esempio()
Dim R(1 To 2) As Range, i, j
Set R(1) = Range([Foglio1!A2], [Foglio1!A2].End(xlDown))
Set R(2) = Range([Foglio1!B2], [Foglio1!B2].End(xlDown))
For Each j In R(2)
For Each i In R(1)
If i = j Then
i.Delete
End If
Next
Next
End Sub
===================================
Bruno
Il problema non sta nel trovare la soluzione più 'facile' ma ne trovare quella più funzionale al flusso di lavoro. Intanto Antonella lavora su elenchi multicampo e quindi nell'avere l'elenco delle persone da eliminare dal suo elenco madre potrebbe avere la necessità di eliminare intere righe di un intervallo di dati e di farlo dopo eventualmente fatto delle verifiche ( trovo pericoloso l'eliminazione diretta di dati ). Ma per tirarla corta
forzando il ragionamento alla soluzione 'più facile' potrei risponderti che per chi ha Excel 2019 o Office365 una formula matriciale dinamica che estrae tutte le righe (con tutti campi) del primo elenco che hanno corrispondenza nel secondo in base al nome cliente è la via più diretta

=FILTRO($A$2:$H$15;SE.ERRORE(CONFRONTA($A$2:$A$15;'estrazione anag gen clienti'!$A$2:$A$11;0);FALSO))

da inserire come formula ordinaria in una singola cella
qui tutto il materiale in cartella compressa con le soluzioni alternative in particolare Power Query. Vedi il file SERVIZI DITTA SERVICE formula matriciale dinamica.xlxs (formula in cella L1) per formula sopra.

https://www.dropbox.com/s/cuu8kxdq54gi9qu/Servizi_ditta_service.zip?dl=0

Elio
b***@gmail.com
2020-05-18 15:16:12 UTC
Permalink
Post by b***@gmail.com
Post by Bruno Campanini
Post by Stryc9
Salve a tutti
devo confrontare due colonne di nominativi iscritti ad un tipo servizio, son
qualche migliaio. Ogni mese devo controllare quanti degli iscritti a quel
service sono sempre attivi e quanti no, per la fatturazione.
Per far ciò devo fare l'estrazione degli iscritti in generale, e confrontare
nome nome e evidenziare i cancellati, per escludere gli eventuali abbonati
dalla fatturazione.
Io vorrei affiancare le due colonne con i nomi, e far si che excel trovi ed
evidenzi i nomi interessati.
come possofare?
Così è troppo facile?
============================
Public Sub Esempio()
Dim R(1 To 2) As Range, i, j
Set R(1) = Range([Foglio1!A2], [Foglio1!A2].End(xlDown))
Set R(2) = Range([Foglio1!B2], [Foglio1!B2].End(xlDown))
For Each j In R(2)
For Each i In R(1)
If i = j Then
i.Delete
End If
Next
Next
End Sub
===================================
Bruno
Il problema non sta nel trovare la soluzione più 'facile' ma ne trovare quella più funzionale al flusso di lavoro. Intanto Antonella lavora su elenchi multicampo e quindi nell'avere l'elenco delle persone da eliminare dal suo elenco madre potrebbe avere la necessità di eliminare intere righe di un intervallo di dati e di farlo dopo eventualmente fatto delle verifiche ( trovo pericoloso l'eliminazione diretta di dati ). Ma per tirarla corta
forzando il ragionamento alla soluzione 'più facile' potrei risponderti che per chi ha Excel 2019 o Office365 una formula matriciale dinamica che estrae tutte le righe (con tutti campi) del primo elenco che hanno corrispondenza nel secondo in base al nome cliente è la via più diretta
=FILTRO($A$2:$H$15;SE.ERRORE(CONFRONTA($A$2:$A$15;'estrazione anag gen clienti'!$A$2:$A$11;0);FALSO))
da inserire come formula ordinaria in una singola cella
qui tutto il materiale in cartella compressa con le soluzioni alternative in particolare Power Query. Vedi il file SERVIZI DITTA SERVICE formula matriciale dinamica.xlxs (formula in cella L1) per formula sopra.
https://www.dropbox.com/s/cuu8kxdq54gi9qu/Servizi_ditta_service.zip?dl=0
Elio
Pardon Funzione FILTER / FILTRO solo in Excel per Microsoft 365
Bruno Campanini
2020-05-18 22:38:32 UTC
Permalink
Post by b***@gmail.com
Post by Bruno Campanini
Così è troppo facile?
============================
Public Sub Esempio()
Dim R(1 To 2) As Range, i, j
Set R(1) = Range([Foglio1!A2], [Foglio1!A2].End(xlDown))
Set R(2) = Range([Foglio1!B2], [Foglio1!B2].End(xlDown))
For Each j In R(2)
For Each i In R(1)
If i = j Then
i.Delete
End If
Next
Next
End Sub
===================================
Bruno
Il problema non sta nel trovare la soluzione più 'facile' ma ne trovare
quella più funzionale al flusso di lavoro. Intanto Antonella lavora su
elenchi multicampo e quindi nell'avere l'elenco delle persone da eliminare
dal suo elenco madre potrebbe avere la necessità di eliminare intere righe di
un intervallo di dati e di farlo dopo eventualmente fatto delle verifiche (
trovo pericoloso l'eliminazione diretta di dati ).
Basta che lo precisi.
Si sostituisce i.Delete con i.EntireRow.Delete
In tale circostanza l'elenco dei clienti da eliminare, secondo
l'esempio inviato, dovrà trovarsi sopra o sotto i nomi abbonati
e non ad essi affiancati.
Per tirarla ancor più corta... tutto quel che segue è già tutto
qui compreso: è solo una scelta fra Power Query e il vecchio VBA.
Post by b***@gmail.com
Ma per tirarla corta
forzando il ragionamento alla soluzione 'più facile' potrei risponderti che
per chi ha Excel 2019 o Office365 una formula matriciale dinamica che estrae
tutte le righe (con tutti campi) del primo elenco che hanno corrispondenza
nel secondo in base al nome cliente è la via più diretta
=FILTRO($A$2:$H$15;SE.ERRORE(CONFRONTA($A$2:$A$15;'estrazione anag gen
clienti'!$A$2:$A$11;0);FALSO))
da inserire come formula ordinaria in una singola cella
qui tutto il materiale in cartella compressa con le soluzioni alternative in
particolare Power Query. Vedi il file SERVIZI DITTA SERVICE formula
matriciale dinamica.xlxs (formula in cella L1) per formula sopra.
https://www.dropbox.com/s/cuu8kxdq54gi9qu/Servizi_ditta_service.zip?dl=0
Elio
Bruno
b***@gmail.com
2020-05-19 14:44:11 UTC
Permalink
Post by Bruno Campanini
Post by Bruno Campanini
Così è troppo facile?
============================
Public Sub Esempio()
Dim R(1 To 2) As Range, i, j
Set R(1) = Range([Foglio1!A2], [Foglio1!A2].End(xlDown))
Set R(2) = Range([Foglio1!B2], [Foglio1!B2].End(xlDown))
For Each j In R(2)
For Each i In R(1)
If i = j Then
i.Delete
End If
Next
Next
End Sub
Basta che lo precisi.
Si sostituisce i.Delete con i.EntireRow.Delete
Per tirarla ancor più corta... tutto quel che segue è già tutto
qui compreso: è solo una scelta fra Power Query e il vecchio VBA.
Per Bruno:
La diatriba tra 'vecchio VBA' e Power Query è attiva tra gli Excel pro. Secondo me non dovrebbe essere affrontata con l'approccio del tifoso ma con mentalità operativa tenendo conto di molteplici variabili, quali il flusso di lavoro e la sua logica e la tipologia dei dati di origine. I dati sono su cloud, locali, sono strutturati a database o sono in forma mista di reportistica? Devo consolidarli perché distribuiti su più file o fogli di lavoro? Quante volte devo fare un'operazione? Quali strumenti mi mette a disposizione Excel? Quali mi permettono migliore performance, flessibilità, manutenzione, distribuzione? Se ho bisogno di calcoli / formule li faccio a monte in Power Query, sul foglio di lavoro o in una misura di Power Pivot con uso di formule DAX? Peraltro la scelta di uno strumento viene condizionata dall'utilizzo di altri strumenti: se invece di elenchi uso oggetti Tabella cambia anche il codice VBA e la sintassi delle formule sul foglio di lavoro cambia. Con gli oggetti tabella non ho bisogno di determinare l'indirizzo dell'ultima cella ( con tutte le problematiche legate a vari metodi di determinare l'ultima cella con dati: https://stackoverflow.com/questions/11169445/error-in-finding-last-used-cell-in-excel-with-vba/11169920#11169920) o di preoccuparmi con un .Delete di cancellare un'intera riga con tutto quanto vi potrebbe essere fuori dalla tabella; in quanto il metodo Delete dell'oggetto ListRow cancella solo la riga all'interna della tabella non quella di tutto il foglio di lavoro. Anche l'uso dello stesso VBA può essere di sola manipolazione di strumenti avanzati di Excel ( Tabelle Pivot; oggetti tabelle, Cache di Pivot, ecc) oppure di uso esclusivo di array (molto visual basic e poco Excel ). La differenza la fa anche la versione di Excel: oggi chi ha Excel 365 ha a disposizione formule matriciali dinamiche che fanno cose una volta possibili solo con manipolazione da vba del filtro avanzato: vedi funzione FILTRO. Tra poco arriveranno le funzioni che permettono uso di variabili al loro interno(funzione LET ora disponibile solo per Office Insider). Non si comprende perché mai gli ingegneri informatici della microsoft abbiano sviluppato strumenti di analisi avanzata se tutto potesse essere efficacemente fatto con Excel 2003 e il suo VBA. Ormai che la programmazione in Excel sia solo VBA non è più un paradigma. C'è il linguaggio M in Power Query; le formule DAX in Power Pivot; con uso di componenti aggiuntivi si può per determinate Tasks scrivere anche in Phyton ( https://www.myonlinetraininghub.com/real-time-data-excel). Per concludere ognuno può fare quello che vuole ma affermazioni come 'Così è troppo facile?' implicitamente vogliono porre uno standard di riferimento (excel classico e il suo VBA), perchè in italiano io comprendo che 'Così è troppo facile?' equivale 'ma perchè la fate così difficile con strumenti così complicati?'. Ma li conosci sufficientemente questi strumenti per poter con equilibrio fare una scelta tra questi per legittimare (leggi presunzione di standard di riferimento) le tue affermazioni?

Elio

Stryc9
2020-05-19 04:06:23 UTC
Permalink
Post by b***@gmail.com
Post by Bruno Campanini
Post by Stryc9
Salve a tutti
devo confrontare due colonne di nominativi iscritti ad un tipo servizio, son
qualche migliaio. Ogni mese devo controllare quanti degli iscritti a quel
service sono sempre attivi e quanti no, per la fatturazione.
Per far ciò devo fare l'estrazione degli iscritti in generale, e confrontare
nome nome e evidenziare i cancellati, per escludere gli eventuali abbonati
dalla fatturazione.
Io vorrei affiancare le due colonne con i nomi, e far si che excel trovi ed
evidenzi i nomi interessati.
come possofare?
Così è troppo facile?
============================
Public Sub Esempio()
Dim R(1 To 2) As Range, i, j
Set R(1) = Range([Foglio1!A2], [Foglio1!A2].End(xlDown))
Set R(2) = Range([Foglio1!B2], [Foglio1!B2].End(xlDown))
For Each j In R(2)
For Each i In R(1)
If i = j Then
i.Delete
End If
Next
Next
End Sub
===================================
Bruno
Il problema non sta nel trovare la soluzione più 'facile' ma ne trovare quella più funzionale al flusso di lavoro. Intanto Antonella lavora su elenchi multicampo e quindi nell'avere l'elenco delle persone da eliminare dal suo elenco madre potrebbe avere la necessità di eliminare intere righe di un intervallo di dati e di farlo dopo eventualmente fatto delle verifiche ( trovo pericoloso l'eliminazione diretta di dati ). Ma per tirarla corta
forzando il ragionamento alla soluzione 'più facile' potrei risponderti che per chi ha Excel 2019 o Office365 una formula matriciale dinamica che estrae tutte le righe (con tutti campi) del primo elenco che hanno corrispondenza nel secondo in base al nome cliente è la via più diretta
=FILTRO($A$2:$H$15;SE.ERRORE(CONFRONTA($A$2:$A$15;'estrazione anag gen clienti'!$A$2:$A$11;0);FALSO))
da inserire come formula ordinaria in una singola cella
qui tutto il materiale in cartella compressa con le soluzioni alternative in particolare Power Query. Vedi il file SERVIZI DITTA SERVICE formula matriciale dinamica.xlxs (formula in cella L1) per formula sopra.
https://www.dropbox.com/s/cuu8kxdq54gi9qu/Servizi_ditta_service.zip?dl=0
Elio
Grazie, Grazie davvero! Gentilissimo!

Adesso mi ci metto di buzzo buono e vedo di applicare il tutto al mio compito.


grazie
Stryc9
2020-05-19 04:09:53 UTC
Permalink
Post by Stryc9
Post by b***@gmail.com
Post by Bruno Campanini
Post by Stryc9
Salve a tutti
devo confrontare due colonne di nominativi iscritti ad un tipo servizio, son
qualche migliaio. Ogni mese devo controllare quanti degli iscritti a quel
service sono sempre attivi e quanti no, per la fatturazione.
Per far ciò devo fare l'estrazione degli iscritti in generale, e confrontare
nome nome e evidenziare i cancellati, per escludere gli eventuali abbonati
dalla fatturazione.
Io vorrei affiancare le due colonne con i nomi, e far si che excel trovi ed
evidenzi i nomi interessati.
come possofare?
Così è troppo facile?
============================
Public Sub Esempio()
Dim R(1 To 2) As Range, i, j
Set R(1) = Range([Foglio1!A2], [Foglio1!A2].End(xlDown))
Set R(2) = Range([Foglio1!B2], [Foglio1!B2].End(xlDown))
For Each j In R(2)
For Each i In R(1)
If i = j Then
i.Delete
End If
Next
Next
End Sub
===================================
Bruno
Il problema non sta nel trovare la soluzione più 'facile' ma ne trovare quella più funzionale al flusso di lavoro. Intanto Antonella lavora su elenchi multicampo e quindi nell'avere l'elenco delle persone da eliminare dal suo elenco madre potrebbe avere la necessità di eliminare intere righe di un intervallo di dati e di farlo dopo eventualmente fatto delle verifiche ( trovo pericoloso l'eliminazione diretta di dati ). Ma per tirarla corta
forzando il ragionamento alla soluzione 'più facile' potrei risponderti che per chi ha Excel 2019 o Office365 una formula matriciale dinamica che estrae tutte le righe (con tutti campi) del primo elenco che hanno corrispondenza nel secondo in base al nome cliente è la via più diretta
=FILTRO($A$2:$H$15;SE.ERRORE(CONFRONTA($A$2:$A$15;'estrazione anag gen clienti'!$A$2:$A$11;0);FALSO))
da inserire come formula ordinaria in una singola cella
qui tutto il materiale in cartella compressa con le soluzioni alternative in particolare Power Query. Vedi il file SERVIZI DITTA SERVICE formula matriciale dinamica.xlxs (formula in cella L1) per formula sopra.
https://www.dropbox.com/s/cuu8kxdq54gi9qu/Servizi_ditta_service.zip?dl=0
Elio
Grazie, Grazie davvero! Gentilissimo!
Adesso mi ci metto di buzzo buono e vedo di applicare il tutto al mio compito.
grazie
Grazie a tutti tantissimo. Siete impagabili.

Mi avete dato conferma che devo trovare il modo di fare un corso su excel, vista l'indubbia utilità.

Consigli?
b***@gmail.com
2020-05-19 13:39:37 UTC
Permalink
Post by Stryc9
Post by Stryc9
Post by b***@gmail.com
Post by Bruno Campanini
Post by Stryc9
Salve a tutti
devo confrontare due colonne di nominativi iscritti ad un tipo servizio, son
qualche migliaio. Ogni mese devo controllare quanti degli iscritti a quel
service sono sempre attivi e quanti no, per la fatturazione.
Per far ciò devo fare l'estrazione degli iscritti in generale, e confrontare
nome nome e evidenziare i cancellati, per escludere gli eventuali abbonati
dalla fatturazione.
Io vorrei affiancare le due colonne con i nomi, e far si che excel trovi ed
evidenzi i nomi interessati.
come possofare?
Così è troppo facile?
============================
Public Sub Esempio()
Dim R(1 To 2) As Range, i, j
Set R(1) = Range([Foglio1!A2], [Foglio1!A2].End(xlDown))
Set R(2) = Range([Foglio1!B2], [Foglio1!B2].End(xlDown))
For Each j In R(2)
For Each i In R(1)
If i = j Then
i.Delete
End If
Next
Next
End Sub
===================================
Bruno
Il problema non sta nel trovare la soluzione più 'facile' ma ne trovare quella più funzionale al flusso di lavoro. Intanto Antonella lavora su elenchi multicampo e quindi nell'avere l'elenco delle persone da eliminare dal suo elenco madre potrebbe avere la necessità di eliminare intere righe di un intervallo di dati e di farlo dopo eventualmente fatto delle verifiche ( trovo pericoloso l'eliminazione diretta di dati ). Ma per tirarla corta
forzando il ragionamento alla soluzione 'più facile' potrei risponderti che per chi ha Excel 2019 o Office365 una formula matriciale dinamica che estrae tutte le righe (con tutti campi) del primo elenco che hanno corrispondenza nel secondo in base al nome cliente è la via più diretta
=FILTRO($A$2:$H$15;SE.ERRORE(CONFRONTA($A$2:$A$15;'estrazione anag gen clienti'!$A$2:$A$11;0);FALSO))
da inserire come formula ordinaria in una singola cella
qui tutto il materiale in cartella compressa con le soluzioni alternative in particolare Power Query. Vedi il file SERVIZI DITTA SERVICE formula matriciale dinamica.xlxs (formula in cella L1) per formula sopra.
https://www.dropbox.com/s/cuu8kxdq54gi9qu/Servizi_ditta_service.zip?dl=0
Elio
Grazie, Grazie davvero! Gentilissimo!
Adesso mi ci metto di buzzo buono e vedo di applicare il tutto al mio compito.
grazie
Grazie a tutti tantissimo. Siete impagabili.
Mi avete dato conferma che devo trovare il modo di fare un corso su excel, vista l'indubbia utilità.
Consigli?
La manualistica, anche in italiano per quelli meno complessi, è ampia. Basta che digiti excel book e/o libri sul web e avrai l'imbarazzo della scelta.
Stryc9
2020-05-19 14:44:08 UTC
Permalink
Post by b***@gmail.com
Post by Stryc9
Post by Stryc9
Post by b***@gmail.com
Post by Bruno Campanini
Post by Stryc9
Salve a tutti
devo confrontare due colonne di nominativi iscritti ad un tipo servizio, son
qualche migliaio. Ogni mese devo controllare quanti degli iscritti a quel
service sono sempre attivi e quanti no, per la fatturazione.
Per far ciò devo fare l'estrazione degli iscritti in generale, e confrontare
nome nome e evidenziare i cancellati, per escludere gli eventuali abbonati
dalla fatturazione.
Io vorrei affiancare le due colonne con i nomi, e far si che excel trovi ed
evidenzi i nomi interessati.
come possofare?
Così è troppo facile?
============================
Public Sub Esempio()
Dim R(1 To 2) As Range, i, j
Set R(1) = Range([Foglio1!A2], [Foglio1!A2].End(xlDown))
Set R(2) = Range([Foglio1!B2], [Foglio1!B2].End(xlDown))
For Each j In R(2)
For Each i In R(1)
If i = j Then
i.Delete
End If
Next
Next
End Sub
===================================
Bruno
Il problema non sta nel trovare la soluzione più 'facile' ma ne trovare quella più funzionale al flusso di lavoro. Intanto Antonella lavora su elenchi multicampo e quindi nell'avere l'elenco delle persone da eliminare dal suo elenco madre potrebbe avere la necessità di eliminare intere righe di un intervallo di dati e di farlo dopo eventualmente fatto delle verifiche ( trovo pericoloso l'eliminazione diretta di dati ). Ma per tirarla corta
forzando il ragionamento alla soluzione 'più facile' potrei risponderti che per chi ha Excel 2019 o Office365 una formula matriciale dinamica che estrae tutte le righe (con tutti campi) del primo elenco che hanno corrispondenza nel secondo in base al nome cliente è la via più diretta
=FILTRO($A$2:$H$15;SE.ERRORE(CONFRONTA($A$2:$A$15;'estrazione anag gen clienti'!$A$2:$A$11;0);FALSO))
da inserire come formula ordinaria in una singola cella
qui tutto il materiale in cartella compressa con le soluzioni alternative in particolare Power Query. Vedi il file SERVIZI DITTA SERVICE formula matriciale dinamica.xlxs (formula in cella L1) per formula sopra.
https://www.dropbox.com/s/cuu8kxdq54gi9qu/Servizi_ditta_service.zip?dl=0
Elio
Grazie, Grazie davvero! Gentilissimo!
Adesso mi ci metto di buzzo buono e vedo di applicare il tutto al mio compito.
grazie
Grazie a tutti tantissimo. Siete impagabili.
Mi avete dato conferma che devo trovare il modo di fare un corso su excel, vista l'indubbia utilità.
Consigli?
La manualistica, anche in italiano per quelli meno complessi, è ampia. Basta che digiti excel book e/o libri sul web e avrai l'imbarazzo della scelta.
Con la manualistica mi ci trovo poco, credo che una parola o un esempio siano nettamente migliori per l'apprendimento. O almeno per quel che mi riguarda.
Loading...