Salta al contenuto
Guida

Pulizia dati anagrafici in Excel: separare nome/cognome, rimuovere duplicati, normalizzare colonne

Esportato un elenco clienti dal CRM o dal gestionale e ti ritrovi nomi e cognomi nella stessa cella, righe duplicate, città scritte in 4 modi diversi? Come ripulire l'anagrafica Excel in mezz'ora con strumenti nativi.

SynSphere Italia 9 min di lettura

Capita a tutte le PMI italiane prima o poi: arriva un nuovo CRM, un nuovo gestionale, una migrazione fra sistemi, e il primo passaggio è esportare l’anagrafica clienti su Excel. Il file iniziale è sempre sporco: nomi e cognomi nella stessa cella, mille modi di scrivere “Mecanica Bresciana s.r.l.”, righe duplicate camuffate da spazi diversi, città scritte come MILANO / Milano / milano (MI) / Milano - Italia, partita IVA con o senza prefisso IT.

Senza una pulizia preliminare, il nuovo CRM eredita lo sporco e duplicalo di sistema in sistema. Vediamo come ripulire un’anagrafica Excel di 500-5000 righe in mezz’ora-un’ora usando solo strumenti nativi Excel (niente VBA, niente add-in), con un approccio strutturato che funziona davvero in PMI.

Il workflow in 6 step

L’ordine conta. Saltare uno step costringe a tornare indietro e rifare il lavoro:

  1. Backup del file originale (sempre).
  2. Trim degli spazi invisibili (cause #1 di “duplicati nascosti”).
  3. Normalizzazione case (UPPER/lower/Proper).
  4. Separazione colonne fuse (nome/cognome, indirizzo).
  5. Normalizzazione campi categoriali (città, settore, partita IVA).
  6. Rimozione duplicati (esatti + fuzzy).

Step 1 — Backup

Banale ma essenziale: prima di toccare il file, fai Ctrl+S e poi File → Salva con nome → cognomi-clienti-originale-2026-05-27.xlsx. La pulizia anagrafica è un’operazione distruttiva: una volta che hai cancellato 200 righe duplicate, non hai un modo banale per recuperarle se ti accorgi che 30 erano in realtà clienti diversi.

Step 2 — Trim degli spazi

Il problema invisibile #1: gli spazi Rossi & Figli SRL con spazi a inizio/fine/in mezzo. Excel li tratta come stringhe diverse da Rossi & Figli SRL. Risultato: 4 record “duplicati” che non vengono identificati come tali.

Funzione ANNULLA.SPAZI (in inglese TRIM):

=ANNULLA.SPAZI(A2)

Rimuove gli spazi iniziali, finali, e collassa gli spazi interni multipli a uno singolo. Applica a tutta la colonna, poi:

  1. Seleziona la colonna con i risultati ANNULLA.SPAZI.
  2. Ctrl+C per copiare.
  3. Sulla colonna originale → tasto destro → Incolla specialeSolo valori.
  4. Cancella la colonna helper.

Ripeti per ogni colonna testuale (ragione sociale, indirizzo, città, note).

Step 3 — Normalizzazione case

Le città MILANO / Milano / milano sono semanticamente uguali, ma Excel le confronta come distinte. Tre funzioni native:

FunzioneEffettoQuando usarla
=MAIUSC(A2)TUTTO MAIUSCOLOCodici, P.IVA, codici fiscali
=MINUSC(A2)tutto minuscoloEmail
=MAIUSC.INIZ(A2)Iniziali MaiuscoleNomi, cognomi, città

Esempio:

  • Email → =MINUSC(A2)mario.rossi@cliente.it
  • Città → =MAIUSC.INIZ(A2)Milano
  • Codice fiscale → =MAIUSC(A2)RSSMRA85A01H501Z

Stesso pattern del trim: applica formula, copia, incolla speciale → solo valori, cancella helper.

Attenzione su MAIUSC.INIZ: dà problemi su preposizioni e nomi composti italiani: Di Bonaventura diventa Di Bonaventura ✓, ma D'Alessio diventa D'Alessio (corretto), degli Esposti diventa Degli Esposti (semanticamente discutibile ma OK). Per nomi propri italiani il risultato è quasi sempre accettabile.

Step 4 — Separare colonne fuse

Caso classico: una colonna Nome e cognome con Mario Rossi, Lucia Bianchi, Maria Antonietta Conti. Va separata in due colonne Nome e Cognome.

Metodo 1 — Testo in colonne (delimitato)

Funziona se nomi sono separati da un singolo spazio:

  1. Seleziona la colonna Nome e cognome.
  2. Menu DatiTesto in colonne.
  3. Wizard: Delimitato → Avanti.
  4. Spunta Spazio → Avanti.
  5. Fine.

Excel splitta in colonne. Limite: cognomi composti tipo de Marco o Della Valle finiscono frammentati su 3+ colonne. Funziona bene per il 70-80% dei nomi italiani, ma servono interventi manuali sul resto.

Metodo 2 — Funzioni SINISTRA + DESTRA + TROVA

Approccio più robusto quando i nomi sono lunghi:

=SINISTRA(A2,TROVA(" ",A2)-1)               (estrae il NOME)
=STRINGA.ESTRAI(A2,TROVA(" ",A2)+1,255)     (estrae il COGNOME)

Per nomi multi-parola tipo Maria Antonietta: questo metodo prende solo Maria come nome. Va combinato con una regola: se il nome estratto è in una lista di “nomi multipli noti” (Maria, Anna, Giuseppe, ecc.), allora estendi al successivo spazio. In pratica: per anagrafiche piccole si fa a mano, per anagrafiche grandi si usa Python in Excel (vedi sotto).

Metodo 3 — Power Query (consigliato per >500 righe)

Più robusto e ripetibile. Da Excel:

  1. Seleziona la colonna.
  2. DatiDa tabella/intervallo → conferma.
  3. Power Query si apre. Sulla colonna → tasto destro → Dividi colonnaPer delimitatore → Spazio → Avanzato: dividere in 2 colonne, dalla prima occorrenza del delimitatore.
  4. HomeChiudi e carica in… → tabella esistente.

Vantaggio: il workflow rimane registrato. La prossima esportazione anagrafica passa per la stessa pulizia automaticamente. Per le PMI che fanno export ricorrenti vale l’investimento di 30 minuti di apprendimento.

Metodo 4 — Python in Excel (anagrafiche complesse)

Per nomi italiani lunghi con preposizioni e cognomi composti, Python è il metodo più robusto:

import pandas as pd
df = xl("A2:A1000", headers=False)
nomi_completi = df.iloc[:, 0].astype(str)

# Lista "primi nomi noti" per supportare nomi doppi
primi_nomi_doppi = ['Maria', 'Anna', 'Maria Pia', 'Giovanni', 'Pier', 'Pietro']
def split_nome(nome_completo):
    parts = nome_completo.strip().split()
    if len(parts) >= 2 and parts[0] in primi_nomi_doppi:
        nome = ' '.join(parts[:2])
        cognome = ' '.join(parts[2:])
    else:
        nome = parts[0]
        cognome = ' '.join(parts[1:])
    return pd.Series([nome, cognome])

risultato = nomi_completi.apply(split_nome)
risultato.columns = ['nome', 'cognome']
risultato

Vedi Excel + Python è GA: 5 use case per PMI per la procedura completa di abilitazione Python in Excel.

Step 5 — Normalizzazione campi categoriali

Città e province

Il caso italiano è gestibile con una tabella di mapping in un foglio separato. Crea il foglio mapping_citta con colonne:

OriginaleNormalizzato
MILANOMilano
milano (MI)Milano
Milano - ItaliaMilano
Roma RMRoma
ROMA (Italia)Roma

Poi nel foglio principale usa CERCA.VERT:

=CERCA.VERT(B2,mapping_citta!A:B,2,FALSO)

Per le città non in mapping, ritorna #N/D — quelle vanno aggiunte manualmente al mapping. La tabella mapping cresce con il tempo e diventa un asset riutilizzabile per le future esportazioni.

Partite IVA

In Italia la P.IVA ha 11 cifre. Le anagrafiche storiche possono averla in formati incompatibili:

  • IT12345678901
  • 12345678901
  • 12345678901 - Italia
  • 12345.6789.01 (con punti decorativi)

Normalizza con:

=PULISCI(SOSTITUISCI(SOSTITUISCI(SOSTITUISCI(B2,"IT",""),".",""),"-",""))

PULISCI rimuove caratteri non stampabili, SOSTITUISCI annidate rimuovono IT, ., -. Risultato: solo le 11 cifre numeriche.

Codice fiscale

16 caratteri alfanumerici per persona fisica, 11 cifre per persona giuridica. Verifica integrità lunghezza:

=SE(O(LUNGHEZZA(B2)=16,LUNGHEZZA(B2)=11),"OK","ERRORE")

Step 6 — Rimuovere duplicati

Duplicati esatti

Dopo gli step 1-5 i duplicati che prima erano “nascosti” diventano evidenti.

  1. Seleziona l’intero dataset (Ctrl+A).
  2. DatiRimuovi duplicati.
  3. Spunta le colonne da considerare per il match. Per anagrafica clienti tipicamente: P.IVA + Email principale.
  4. Conferma → Excel rimuove le righe duplicate (mantenendo la prima occorrenza).

Duplicati “fuzzy” (con piccole differenze)

Caso classico: Rossi & Figli SRL vs Rossi e Figli S.r.l. — semanticamente uguali, ma stringhe diverse. Excel base non li trova.

Tre approcci:

A — Ordinamento + ispezione manuale (anagrafiche <500 righe). Ordina per ragione sociale. I duplicati fuzzy finiscono vicini → ispezione visiva veloce.

B — Funzione CONFRONTA.STRINGHE (Excel 2024+): restituisce un punteggio di similarità 0-1. Per identificare i sospetti:

=CONFRONTA.STRINGHE(B2,B3) > 0.85

Restituisce VERO se la riga 2 e 3 sono simili al 85%+.

C — Python con rapidfuzz (anagrafiche >500 righe):

import pandas as pd
from rapidfuzz import fuzz, process

df = xl("B2:B1000", headers=False)
nomi = df.iloc[:, 0].dropna().str.upper().tolist()

duplicati = []
for i, nome in enumerate(nomi):
    matches = process.extract(nome, nomi[i+1:], scorer=fuzz.token_sort_ratio, score_cutoff=85)
    for match, score, _ in matches:
        duplicati.append({'nome_a': nome, 'nome_b': match, 'similarita': score})

pd.DataFrame(duplicati).sort_values('similarita', ascending=False)

Vedi il tutorial Python in Excel completo per il use case “trovare duplicati fuzzy” approfondito.

Validazione finale

Prima di importare nel CRM nuovo, alcuni check essenziali:

  • Conteggio righe: di partenza vs finale (es. 2.347 → 2.180 = 167 duplicati rimossi).
  • Campi mai vuoti per riga: Ragione sociale, P.IVA / Codice fiscale, Email principale (almeno uno fra telefono e email).
  • Validità email con regex semplice in Convalida dati:
    =NON(VAL.ERRORE(TROVA("@",B2)))
  • P.IVA univoche con CONTA.SE:
    =SE(CONTA.SE($C$2:$C$3000,C2)>1,"DUPLICATA","OK")

Quando aprire un progetto strutturato

Sotto i 500 record l’approccio Excel manuale funziona. Sopra i 2.000 record con storico fatturato pluriennale e gerarchie clienti (gruppi, filiali), conviene investire in un progetto di data quality strutturato prima della migrazione CRM:

  • Dynamics 365 Sales import wizard ha funzioni di deduplication e matching avanzato, configurabili per le regole specifiche dell’azienda.
  • Microsoft Dataverse + Power Query permette di mantenere il workflow di pulizia ripetibile fra import successivi.
  • Master Data Management (per PMI con multi-source dati: ERP + CRM + e-commerce) — passaggio successivo, tipicamente con SQL Server + integration runtime.

Per una pulizia anagrafica strutturata pre-go-live CRM, parla con un nostro consulente: è uno scenario tipico nei nostri progetti Dynamics 365 Business Central e Dynamics 365 Sales.

Prodotti SynSphere correlati

I prodotti del catalogo SynSphere richiamati in questo articolo.