Calcolo codice fiscale Excel

Microsoft_Excel_Calcolo_Codice_Fiscale

In questo articolo, scoprirai passo passo come funziona il calcolo del codice fiscale in Italia e sarai in grado di crearlo da zero su Excel. Cliccando il pulsante, potrai scaricare un file dedicato per utilizzarlo quando preferisci.

Solo un appunto prima di cominciare. In rari casi può succede che persone diverse abbiano lo stesso codice fiscale, in gergo viene chiamato omocodia ma è parte di questo articolo poichè rappresenta un caso molto particolare. Non ci sarà neanche il caso di cittadini stranieri, dato che in quel caso si inseriscono dei parametri differenziati per stato.

Per ricavare informazioni da un codice fiscale, puoi cliccare il seguente link per accedere all’articolo relativo al calcolo del codice fiscale inverso.

Per navigare nell’articolo, puoi cliccare su questi link:

Cognome | Nome | Data di nascita | Sesso

Comune di nascita| Carattere di controllo | Conclusione

Generatore codice fiscale

Il codice fiscale è composto da numerose parti che seguono regole particolari e si origina da alcuni dati per una singola persona. Per procedere ci servono, per una singola persona:

  • Cognome, che restituirà 3 caratteri
  • Nome, che restituirà altri 3 caratteri (totale 3+3 = 6)
  • Data di nascita, che restituirà ulteriori 3 caratteri (totale 3+3+3 = 9)
  • Sesso, un carattere (totale 9+1 = 10)
  • Comune di nascita, altri 4 caratteri (totale 10+4 = 14)
  • Carattere di controllo finale, un carattere (totale 14+1 = 15)

Preparazione del file Excel per calcolare il codice fiscale

Saranno sufficienti due fogli. Uno sarà chiamato LISTE e ci servirà per ottenere informazioni trasformando i valori che inseriremo. L’altro sarà chiamato CALCOLO_CODICE_FISCALE e ci permetterà di calcolare il codice fiscale.

Il foglio LISTE è così composto:

  • Colonna B: lista di caratteri da A e Z
  • Colonna C: definisce se il carattere nella lista B sia una vocale o una consonante
  • Colonna E: mesi da 01 a 12
  • Colonna F: lettera corrispondente per il codice fiscale
  • Colonna G: elenco codici dei comuni Italiani
  • Colonna H: nome del comune. Queste informazioni derivano dal sito del Ministero dell’Interno
  • Colonna K, L, N, O, Q, R: sono necessarie per l’ultimo carattere di controllo e sono prese da Wikipedia al link indicato in precedenza

Il foglio CALCOLO_CODICE_FISCALE è così predisposto:

E10 è =ANNULLA.SPAZI(MAIUSC(C10))

ANNULLA.SPAZI elimina gli spazi dalla versione in maiuscolo di C10. Questo per evitare errori in fase di inserimento e restituire il valore in maiuscolo per il codice fiscale

F10 è =STRINGA.ESTRAI($E$10;RIF.COLONNA(A1);1)

STRINGA.ESTRAI prendere il valore del cognome (E10). RIF.COLONNA(A1) restituisce 1, quindi iniziamo dal primo carattere del cognome. L’1 finale ci restituisce solo il primo carattere ignorando gli altri valori. Tramite RIF.COLONNA, possiamo trascinare la formula fino a Y10 senza errori

F11 è =SE.ERRORE(INDICE(LISTE!$C$8:$C$33;CONFRONTA(F10;LISTE!$B$8:$B$33;0));””)

SE.ERRORE restituisce un valore vuoto se ci fossero errori nella funzione. INDICE + CONFRONTA permette di determinare se un singolo carattere sia una vocale o una consonante. La formula viene poi replicata fino a Y11

AA10 restituisce i tre caratteri che ci servono per il calcolo del codice fiscale

Prima di spiegarne il funzionamento, dobbiamo però fare un passo indietro e verificare come funzioni il cognome per il calcolo del codice fiscale.

1. Codice fiscale: il cognome

Le domande successive sono tutte tratte dal link di Wikipedia che spiega il funzionamento del codice fiscale. In questa fase vedremo tutte le possibili opzioni e come risolverle, almeno a livello logico.

Chiaramente, per il calcolo del codice fiscale è fondamentale conoscere il cognome della persona selezionata.

CF: cognome di due lettere composto da due vocali (AE)

Dobbiamo aggiungere una X alle due vocali. In questo caso: AE diventa AEX.

CF: cognome di due lettere composto da una vocale e una consonante (RE)

Dobbiamo inserire prima la consonante, poi la vocale e unire una X. In questo caso: RE diventa REX

CF: cognome di due lettere composto da due consonanti (HR)

Dobbiamo ricavare le due consonanti in ordine e poi aggiungere una X. In questo caso: HR diventa HRX.

CF: cognome di lunghezza variabile composto da almeno tre consonanti (ROSSI)

Caso standard. Dobbiamo ricavare le prime tre consonanti del cognome. In questo caso: ROSSI diventa RSS.

CF: cognome di lunghezza variabile composto da due consonanti e varie vocali (HAL)

Prenderemo prima le 2 consonanti e poi le uniremo con la prima vocale. In questo caso: HAL diventa HLA.

CF: cognome di lunghezza variabile composto da una consonante e varie vocali (ALI)

In questo caso, prenderemo la prima consonante e la uniremo con le vocali in ordine. In questo caso: ALI diventa LAI.

CF: cognome di lunghezza variabile composto unicamente da vocali (AEI)

In questo caso, prenderemo le prime due vocali e le uniremo con una X. In questo caso: AEI diventa AEX.


Formula per recuperare le informazioni dal cognome per il codice fiscale
Microsoft_Excel_Calcolo_Codice_Fiscale_Cognome

Spezziamo la formula in AA10 analizzando i singoli componenti:

=PIÙ.SE(

Avendo numerosi condizioni, ottimizziamo con la funzione PIÙ.SE. Ogni volta che la condizione è falsa, si passa a quella successiva.

E(LUNGHEZZA(E10)=2;CONTA.SE(F11:Y11;”V”)=2);

CONCAT(F10;G10;”X”);

  • E verifica che entrambe le condizioni che seguono siano vere
  • LUNGHEZZA(E10)=2 verifica che il cognome sia di due caratteri
  • CONTA.SE(F11:Y11;”V”)=2 verifica che vi siano due vocali
  • Se entrambe le condizioni precedenti sono vere, CONCAT(F10:G10;”X”) restituisce le due vocali in fila aggiungendo una X finale. Lo stesso risultato sarebbe raggiunto utilizzando CONCATENA che è una versione precedente della stessa funzione

E(LUNGHEZZA(E10)=2;CONTA.SE(F11:Y11;”C”)=1);

CONCAT(INDICE(F10:Y10;AGGREGA(15;6;(RIF.COLONNA($7:$27))/(F11:Y11=”C”);1));INDICE(F10:Y10;AGGREGA(15;6;(RIF.COLONNA($7:$27))/(F11:Y11=”V”);1));”X”);

  • E verifica che entrambe le condizioni che seguono siano vere
  • LUNGHEZZA(E10)=2 verifica che il cognome sia di due caratteri
  • CONTA.SE(F11:Y11;”C”)=1 verifica che vi sia una consonante
  • Se entrambe le condizioni precedenti sono vere, CONCAT deve restituire un valore di 3 caratteri contenente la prima consonante, poi la prima vocale e poi una X
  • INDICE(F10:Y10;AGGREGA(15;6;(RIF.COLONNA($7:$27))/(F11:Y11=”C”);1)) recupera la prima consonante con una condizione specifica. Il funzionamento di INDICE + AGGREGA è spiegato nell’articolo per ordinare un elenco con duplicati su Microsoft Excel
  • INDICE(F10:Y10;AGGREGA(15;6;(RIF.COLONNA($7:$27))/(F11:Y11=”V”);1)) segue la stessa struttura precedente ma recupera la prima vocale. Al termine, si aggiunge una X

E(LUNGHEZZA(E10)=2;CONTA.SE(F11:Y11;”C”)=2);

CONCAT(INDICE(F10:Y10;AGGREGA(15;6;(RIF.COLONNA($7:$27))/(F11:Y11=”C”);1));INDICE(F10:Y10;AGGREGA(15;6;(RIF.COLONNA($7:$27))/(F11:Y11=”C”);2));”X”);

  • E verifica che entrambe le condizioni che seguono siano vere
  • LUNGHEZZA(E10)=2 verifica che il cognome sia di due caratteri
  • CONTA.SE(F11:Y11;”C”)=2 verifica che vi siano due consonanti
  • Se entrambe le condizioni precedenti sono vere, CONCAT deve restituire un valore di 3 caratteri contenente la prima consonante, poi la prima vocale e poi una X
  • INDICE(F10:Y10;AGGREGA(15;6;(RIF.COLONNA($7:$27))/(F11:Y11=”C”);1)) recupera la prima consonante con una condizione specifica. Come sopra, per comprendere meglio la formula è possibile visionare l’articolo per ordinare un elenco con duplicati su Microsoft Excel
  • INDICE(F10:Y10;AGGREGA(15;6;(RIF.COLONNA($7:$27))/(F11:Y11=”C”);2)) recupera la seconda consonante. Al termine, si aggiunge una X

CONTA.SE(F11:Y11;”C”)>=3;

CONCAT(INDICE(F10:Y10;AGGREGA(15;6;(RIF.COLONNA($7:$27))/(F11:Y11=”C”);1));INDICE(F10:Y10;AGGREGA(15;6;(RIF.COLONNA($7:$27))/(F11:Y11=”C”);2));INDICE(F10:Y10;AGGREGA(15;6;(RIF.COLONNA($7:$27))/(F11:Y11=”C”);3)));

  • CONTA.SE(F11:Y11;”C”)>=3 verifica che ci siano almeno tre consonanti
  • Se la condizione precedente è vera, CONCAT deve restituire le prime tre consonanti in fila
  • INDICE(F10:Y10;AGGREGA(15;6;(RIF.COLONNA($7:$27))/(F11:Y11=”C”);1)) restituisce la prima consonante
  • La funzione è equivalente anche per i valori successivi, cambia solo la condizione con 1 2 3 finale

CONTA.SE(F11:Y11;”C”)=2;

CONCAT(INDICE(F10:Y10;AGGREGA(15;6;(RIF.COLONNA($7:$27))/(F11:Y11=”C”);1));INDICE(F10:Y10;AGGREGA(15;6;(RIF.COLONNA($7:$27))/(F11:Y11=”C”);2));INDICE(F10:Y10;AGGREGA(15;6;(RIF.COLONNA($7:$27))/(F11:Y11=”V”);1)));

  • CONTA.SE(F11:Y11;”C”)>=2 verifica che ci siano almeno due consonanti
  • Se la condizione precedente è vera, CONCAT deve restituire le due consonanti in fila e la prima vocale
  • INDICE(F10:Y10;AGGREGA(15;6;(RIF.COLONNA($7:$27))/(F11:Y11=”C”);1)) restituisce la prima consonante
  • INDICE(F10:Y10;AGGREGA(15;6;(RIF.COLONNA($7:$27))/(F11:Y11=”C”);2)) restituisce la seconda consonante
  • INDICE(F10:Y10;AGGREGA(15;6;(RIF.COLONNA($7:$27))/(F11:Y11=”V”);1)) restituisce la prima vocale

CONTA.SE(F11:Y11;”C”)=1;

CONCAT(INDICE(F10:Y10;AGGREGA(15;6;(RIF.COLONNA($7:$27))/(F11:Y11=”C”);1));INDICE(F10:Y10;AGGREGA(15;6;(RIF.COLONNA($7:$27))/(F11:Y11=”V”);1));INDICE(F10:Y10;AGGREGA(15;6;(RIF.COLONNA($7:$27))/(F11:Y11=”V”);2)));

  • CONTA.SE(F11:Y11;”C”)=1 verifica che ci sia esattamente una consonante
  • Se la condizione precedente è vera, CONCAT deve restituire l’unica consonante e le prime due vocali
  • INDICE(F10:Y10;AGGREGA(15;6;(RIF.COLONNA($7:$27))/(F11:Y11=”C”);1)) restituisce la prima consonante
  • INDICE(F10:Y10;AGGREGA(15;6;(RIF.COLONNA($7:$27))/(F11:Y11=”V”);1)) restituisce la prima vocale
  • INDICE(F10:Y10;AGGREGA(15;6;(RIF.COLONNA($7:$27))/(F11:Y11=”V”);2)) restituisce la seconda vocale

CONTA.SE(F11:Y11;”C”)=0;

CONCAT(INDICE(F10:Y10;AGGREGA(15;6;(RIF.COLONNA($7:$27))/(F11:Y11=”V”);1));INDICE(F10:Y10;AGGREGA(15;6;(RIF.COLONNA($7:$27))/(F11:Y11=”V”);2));”X”))

  • CONTA.SE(F11:Y11;”C”)=0 verifica che non ci siano consonanti
  • Se la condizione precedente è vera, CONCAT deve restituire le prime due vocali e una X
  • INDICE(F10:Y10;AGGREGA(15;6;(RIF.COLONNA($7:$27))/(F11:Y11=”V”);1)) restituisce la prima vocale
  • INDICE(F10:Y10;AGGREGA(15;6;(RIF.COLONNA($7:$27))/(F11:Y11=”V”);2)) restituisce la seconda vocale. Alle due vocali, si aggiunge una X finale

2. Codice fiscale: il nome

Anche in questo caso, le informazioni sono state ricavate prevalentemente da Wikipedia.

CF: nome con più di tre consonanti (Giuseppe)

Prenderemo la prima, la terza e la quarta consonante. In questo caso: Giuseppe diventa GPP.

CF: nome con tre consonanti (Marco)

Stavolta prenderemo le prime tre consonanti. In questo caso: Marco diventa MRC.

CF: nome con due consonanti (Sara)

Con due sole consonanti, recuperiamo le prime due consonanti e la prima vocale. In questo caso: Sara diventa SRA.

CF: nome con una consonante (Teo)

Stavolta ci servono le prime due consonanti e la prima vocale. In questo caso: Teo diventa TEO.

CF: nome senza consonanti (Aeo)

Prendiamo le prime due vocali e aggiungiamo una X. In questo caso: Aeo diventa AEX.

Formula per recuperare le informazioni dal nome per il codice fiscale
Microsoft_Excel_Calcolo_Codice_Fiscale_Nome

Dobbiamo spezzare la formula per renderla chiara da leggere:

=PIÙ.SE(

Come per il cognome, PIÙ.SE ci aiuta a restituire i valori con diverse condizioni.

CONTA.SE(F15:Y15;”C”)>3;
CONCAT(INDICE(F14:Y14;AGGREGA(15;6;(RIF.COLONNA($7:$27))/(F15:Y15=”C”);1));INDICE(F14:Y14;AGGREGA(15;6;(RIF.COLONNA($7:$27))/(F15:Y15=”C”);3));INDICE(F14:Y14;AGGREGA(15;6;(RIF.COLONNA($7:$27))/(F15:Y15=”C”);4)));

Se nel nome sono presenti più di tre consonanti, saranno restituite la prima, la terza e la quarta.

CONTA.SE(F15:Y15;”C”)=3;
CONCAT(INDICE(F14:Y14;AGGREGA(15;6;(RIF.COLONNA($7:$27))/(F15:Y15=”C”);1));INDICE(F14:Y14;AGGREGA(15;6;(RIF.COLONNA($7:$27))/(F15:Y15=”C”);2));INDICE(F14:Y14;AGGREGA(15;6;(RIF.COLONNA($7:$27))/(F15:Y15=”C”);3)));

Nel caso vi fossero solo tre consonanti, queste sono restituite in fila.

CONTA.SE(F15:Y15;”C”)=2;
CONCAT(INDICE(F14:Y14;AGGREGA(15;6;(RIF.COLONNA($7:$27))/(F15:Y15=”C”);1));INDICE(F14:Y14;AGGREGA(15;6;(RIF.COLONNA($7:$27))/(F15:Y15=”C”);2));INDICE(F14:Y14;AGGREGA(15;6;(RIF.COLONNA($7:$27))/(F15:Y15=”V”);1)));

Se il nome presenta due consonanti, vengono restituiti la prima consonante, la seconda consonante e la prima vocale in quest’ordine.

CONTA.SE(F15:Y15;”C”)=1;
CONCAT(INDICE(F14:Y14;AGGREGA(15;6;(RIF.COLONNA($7:$27))/(F15:Y15=”C”);1));INDICE(F14:Y14;AGGREGA(15;6;(RIF.COLONNA($7:$27))/(F15:Y15=”V”);1));INDICE(F14:Y14;AGGREGA(15;6;(RIF.COLONNA($7:$27))/(F15:Y15=”V”);2)));

Se nel nome è presente solo una consonante, la formula restituisce la consonante e le prime due vocali in ordine.

CONTA.SE(F15:Y15;”C”)=0;
CONCAT(INDICE(F14:Y14;AGGREGA(15;6;(RIF.COLONNA($7:$27))/(F15:Y15=”V”);1));INDICE(F14:Y14;AGGREGA(15;6;(RIF.COLONNA($7:$27))/(F15:Y15=”V”);2));”X”))

Se invece nel nome non sono presenti consonanti, prendiamo le prime due vocali in fila e aggiungiamo una X.

3. Codice Fiscale: la data di nascita

La data di nascita restituisce in totale tre caratteri. Due sono relativi all’anno di nascita, mentre uno è relativo al mese di nascita.

Microsoft_Excel_Calcolo_Codice_Fiscale_Data_Nascita

Nel foglio CALCOLO_CODICE_FISCALE è stata inserita una funzione per trasformare la data in testo:

E18 è =TESTO(C18;”gg/mm/aaaa”)

Mentre successivamente vengono ricavate le due cifre necessarie per il calcolo:

AA18 è =DESTRA(E18;2)

Infine, viene ricavato l’ultimo termine facendo un INDICE + CONFRONTA dal mese che è presente nella cella E18:

AB18 è =INDICE(LISTE!$F$8:$F$19;CONFRONTA(STRINGA.ESTRAI(E18;4;2);LISTE!$E$8:$E$19;0))

4. Codice Fiscale: il sesso

Il sesso restituisce un carattere ed è strettamente collegato con la data di nascita.

Microsoft_Excel_Calcolo_Codice_Fiscale_Sesso

Se la persona è un uomo, allora si ottiene il giorno di nascita. Se invece è una donna, al giorno di nascita si aggiunge 40. Di conseguenza:

AA22 è =SE(C22=”M”;SINISTRA(E18;2);SINISTRA(E18;2)+40)

5. Codice Fiscale: il comune

Il comune restituisce tre caratteri corrispondenti al comune di nascita, che viene controllato sulla lista nel foglio LISTE.

Microsoft_Excel_Calcolo_Codice_Fiscale_Comune

In particolare, la formula è un semplice INDICE + CONFRONTA:

AA26 è =INDICE(LISTE!$H$8:$H$10683;CONFRONTA(E26;LISTE!$I$8:$I$10683;0))

6. Codice fiscale: il carattere di controllo

Il carattere di controllo è uno solo e viene ricavato da quanto calcolato fino a questo momento.

Microsoft_Excel_Calcolo_Codice_Fiscale_Carattere_Controllo

In particolare, i singoli caratteri corrispondono a una lista diversa se sono in una posizione dispari (ad esempio il primo e il terzo carattere) oppure pari (ad esempio il sesto e l’ottavo). Nel foglio LISTE abbiamo due riferimenti diversi e per questo troviamo due formule differenziate, sempre con un INDICE + CONFRONTA.

Per i caratteri dispari viene replicata la seguente formula, cancellando le celle corrispondenti a caratteri pari:

F30 è =INDICE(LISTE!$L:$L;CONFRONTA(F$29;LISTE!$K:$K;0))

Viceversa, per i caratteri pari si inserisce la seguente formula, rimuovendola dalle celle corrispondenti ai caratteri dispari:

G31 è =INDICE(LISTE!$O:$O;CONFRONTA(G$29;LISTE!$N:$N;0))

Il carattere finale viene trovato sommando tutti i riferimenti per i caratteri del codice fiscale fino a questo punto. La somma viene poi divisa per 26 e, a seconda del resto della divisione (ad esempio se fosse 30, il resto sarebbe 4), questo valore viene fatto corrispondere ancora con un’altra lista che troviamo sempre nel foglio LISTE:

AA30 è =INDICE(LISTE!R:R;CONFRONTA(RESTO(SOMMA(F30:T31);26);LISTE!Q:Q;0))

7. Codice Fiscale: conclusione

A questo punto abbiamo tutti i caratteri che ci servono per comporre il codice fiscale. Basta usare la funzione CONCAT per unirli fra di loro.

Microsoft_Excel_Calcolo_Codice_Fiscale

2 commenti su “Calcolo codice fiscale Excel”

  1. Buongiorno,
    ho scaricato il file ma non riesco ad utilizzarlo perché modificando un valore qualsiasi (celle C2, C3, etc) il foglio di calcolo mostra diffusi messaggi di errore (#nome?, soprattutto nelle celle che dovrebbero esprimere il risultato.
    Può aiutarmi ?
    Grazie
    3805167826

    1. Ciao Pasquale!

      Grazie per il tuo commento, che versione usi di Excel? Così vediamo come si può sistemare, dovrebbe andare con Excel 2016 o 2019 / 365.

      A presto e buona giornata

      Marco

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *