Google Sheets - Formula e funzione personalizzata per la verifica del Codice Fiscale
Sto sperimentando le applicazioni Google e la possibilità di automatizzare delle funzioni con l'uso di Google Apps Script.Dopo un po' di tribolazioni sono riuscito con un a certa soddisfazione, a personalizzare il testo di una slide di Google in base ai dati di un fogli di Google Sheets, trasformarla in un file PDF, allegarlo a un messaggio email in HTML, personalizzato anch'esso e inviarlo via email in automatico dall'account Gmail o da uno di quelli per i quali questo account è abilitato a inviare messaggi.
Ho trovato degli interessantissimi tutorial (in inglese) su Youtube, che mi hanno consentito di realizzare cose interessanti, qui: https://www.youtube.com/channel/UC8p19gUXJYTsUPEpusHgteQ
Ora però voglio trattare di come verificare la validità di un codice fiscale in Google Sheets, dato che non ho trovato molto in giro.
In un foglio di Google ho una anagrafica con i codici fiscali in colonna G e volevo fare un controllo su eventuali errori.
Sul funzionamento del Codice Fiscale si possono trovare trovano dei dettagli in Wikipedia: https://it.wikipedia.org/wiki/Codice_fiscale e anche sul sito di Marco Filocamo, indicato più sotto.
Un modo che rileva già molte incongruenze è l'uso di una espressione regolare (regex) che verifica che ci siano lettere e numeri nei posti giusti e nella quantità giusta, tipo quella che ho trovato qui: http://gcalisse.blogspot.com/2019/05/espressione-regolare-per-il-controllo.html
L'espressione così composta non considera validi i codici fiscali modificati per "omocodia". Quando infatti persone nate nello stesso giorno, nello stesso luogo e aventi lo stesso nome, si ritrovano ad avere lo stesso CF, l'Agenzia delle Entrate modifica uno dei due codici sostituendo uno o più di quelli che normalmente sono numeri con delle specifiche lettere.
Mi è accaduto di trovare una persona della Romania la cui penultima cifra, che di norma è un numero, era una "V". la "V" sostituisce il numero 9. Dato che per i Paesi esteri il codice della località non indica una città, ma una intera nazione, la possibilità che nascano due persone nello stesso giorno, con lo stesso nome non è tanto remota.
Per allargare il filtro in modo che accetti anche le possibili lettere (LMNPQRSTUV), la formula diventa:
In Google Sheets, come pure in Excel, è infatti possibile avere delle formule che, messe in una cella, popolano una intera colonna o anche un'area di più righe e più colonne.
La formula dell'esempio seguente è composta da un array che ha un primo elemento fisso, il testo "TestCF", che verrà a trovarsi nella cella dove sta la formula, e una funzione ARRAYFORMULA() che crea a sua volta un array che andrà a popolare le celle sottostanti con i risultati di ciò che viene posto tra le parentesi.
Circa ARRAYFORMULA occorre dire che funziona solo se all'interno vengono usate funzioni che a loro volta sono in grado di operare con array. Non ho trovato indicazioni esplicite su questo argomento ma in diversi casi ho potuto usare ARRAYFORMULA () risparmiandomi di dover duplicare la stessa formula in una colonna.
L'esempio seguente controlla tutti i CF della colonna G (da G5 in giù) e se la verifica i soli numeri fallisce, ne fa una seconda, che considera anche le possibili lettere che possono sostituire i numeri.
Una garanzia molto maggiore che il CF sia corretto la si ottiene grazie alla verifica del "carattere di controllo", che è l'ultimo. una lettera tra A e Z, calcolata in base ai valori dei caratteri precedenti. Se uno qualsiasi dei caratteri viene modificato, questo sistema di controllo rileva l'incoerenza dei dati.
Con parecchio ingegno si può costruire un sistema di formule per verificare un CF solo con le formule native del foglio elettronico, come dimostrato qui: https://www.marcofilocamo.it/calcolo-codice-fiscale-excel/
In alternativa, e rendendo anche possibile il controllo di una intera lista di codici usando ARRAYFORMULA(), si può usare una funzione personalizzata tipo la seguente, da inserire usando il menu "Estensioni > Apps Script" del foglio di Google Sheets:
Ma così com'è serve per verificare il contenuto di una sola, inserendo in un'altra cella la formula:
Verifica del codice di Partita IVA
Allo stesso modo ho creato una function per la partita IVA. Pare funzionare.Anche qui, su Wikipedia (https://it.wikipedia.org/wiki/Partita_IVA) si trovano indicazioni, con anche i codici degli uffici provinciali.