Clienti e Ordini su due tabelle: il design che salva il tuo Google Sheet
Un solo foglio per tutto è la trappola in cui finiscono i Google Sheets usati come gestionale. Separare Clienti e Ordini e collegarli con una chiave risolve duplicati, ricerche infinite e errori di data entry.

C’è uno schema che ricorre in quasi tutti i Google Sheets nati per gestire ordini, clienti, prenotazioni o ticket: tutto su un foglio solo. Una riga per ogni nuovo ordine, e i dati del cliente ripetuti ogni volta. All’inizio funziona. Poi il foglio cresce, il cliente cambia indirizzo, qualcuno scrive il cognome con la doppia e qualcun altro senza, e la ricerca “ma il signor Rossi che ordini ha fatto?” diventa una piccola archeologia.
La buona notizia è che non serve un gestionale, non serve un database, non serve nemmeno cambiare strumento. Serve un cambio di disegno.
Il problema, in concreto
Immagina un foglio “Ordini” strutturato così: data, nome cliente, indirizzo, telefono, email, prodotto, quantità, prezzo. Ogni nuovo ordine è una riga nuova. Dopo sei mesi succede questo:
- lo stesso cliente compare 14 volte, scritto in 6 modi diversi (“Rossi Mario”, “Mario Rossi”, “M. Rossi”, “mario rossi”);
- un cliente cambia indirizzo: ora hai due indirizzi attivi per la stessa persona, e nessuno sa quale sia quello corretto;
- cerchi quante volte ha ordinato il cliente Rossi e fai una
COUNTIFche restituisce un numero diverso da quello che ti aspetti, perché alcune righe lo chiamano “Rossi M.”.
Il foglio funziona ancora. Ma sta lavorando contro di te.
Il disegno corretto: due tabelle e una chiave
La separazione si fa in tre mosse semplici.
1. Foglio Clienti. Una riga per cliente, mai duplicata. Colonne: id_cliente, nome, cognome, telefono, email, indirizzo, note. id_cliente è la chiave: un identificatore univoco che non cambia mai, anche se cambia l’indirizzo.
2. Foglio Ordini. Una riga per ordine. Colonne: id_ordine, data, id_cliente, prodotto, quantità, prezzo, stato. Il cliente non compare per nome o indirizzo: compare per id_cliente.
3. Collegamento. Per vedere i dettagli del cliente accanto a un ordine, usi VLOOKUP o XLOOKUP sul foglio Clienti. L’indirizzo lo scrivi una volta sola. Se cambia, lo aggiorni in un punto e si propaga ovunque.
Come costruire l’id_cliente senza pensarci
L’id può essere un progressivo (1, 2, 3…) oppure derivato da un dato che già hai. Se i clienti ti arrivano per telefono, il numero di telefono è una chiave naturale: è univoco e te lo dicono sempre. Il problema è che lo scrivono in dieci modi (“347 123 4567”, “+39 347 1234567”, “3471234567”). Pulirlo è banale: togli spazi, trattini, prefisso, e tieni solo le cifre.
In Google Sheets con Apps Script si può fare in tre righe:
function normalizzaTelefono(num) {
if (!num) return '';
return String(num).replace(/\D/g, '').replace(/^39/, '');
}
Salvi la funzione in Estensioni → Apps Script, e da quel momento la usi come una qualsiasi formula nel foglio: =normalizzaTelefono(B2). Restituisce sempre la stessa stringa pulita per lo stesso numero, indipendentemente da come è stato scritto.
Inserimento ordine: nuovo cliente o cliente esistente?
Il pezzo che fa la differenza è il momento dell’inserimento. Se chi inserisce ordini deve prima cercare a mano se il cliente esiste, sbaglia. Una funzione (un menu personalizzato in Apps Script, o un bottone sull’interfaccia) può fare tutto da sola:
- chiede il numero di telefono e lo normalizza;
- cerca nel foglio Clienti se quel numero esiste;
- se esiste, recupera
id_clientee inserisce direttamente un nuovo ordine collegato; - se non esiste, chiede i dati del nuovo cliente, lo crea, e poi inserisce l’ordine.
Chi inserisce ordini smette di pensare al problema “cliente esistente o nuovo?”. Il foglio decide.
Cosa ottieni
Niente magia. Solo conseguenze logiche del disegno:
- una
COUNTIFsuid_clienterestituisce sempre il numero corretto di ordini per cliente; - un cambio di indirizzo si fa in un punto e si vede ovunque, anche sugli ordini vecchi;
- il foglio Ordini si pulisce: solo dati operativi, non anagrafica ripetuta;
- se domani vuoi un report mensile per cliente, è una pivot da cinque minuti;
- se domani vuoi migrare a un gestionale vero, le due tabelle ci stanno dentro tali e quali.
Il punto di fondo
Google Sheets non è un giocattolo. È un foglio elettronico, certo, ma può sostenere un piccolo gestionale operativo se gli si dà la struttura giusta. Il singolo accorgimento più importante è questo: ogni entità del tuo lavoro merita la sua tabella. Clienti è una cosa. Ordini è un’altra. Articoli è un’altra ancora. Le si collega con un id, non con nomi che dipendono da come uno ha scritto la maiuscola quel giorno.
È un cambio di disegno che dura cinque minuti e dura per anni.

Blogger dal 2001, Nativo Digitale, Developer.
Da 15 anni mi occupo di IT per una grande Azienda.
Lavoro per abbattere il Digital Divide.
Visita i miei altri progetti
sardiniamobility.com
www.cyberness.it