Excel: come trovare la data più recente ignorando le celle vuote (evitando 9999‑12‑31)

Vuoi ottenere la data più recente in un intervallo Excel ignorando le celle vuote, evitando che compaiano valori “fittizi” come 9999‑12‑31 o che si propaghino su altre righe? In questa guida trovi le migliori formule (MAXIFS, array classiche e dinamiche) e un metodo con tabella pivot, con esempi pratici e consigli.

Indice

Perché compare 9999‑12‑31 (o altre “date fittizie”)?

In molti file provenienti da ERP, CRM o esportazioni CSV, un valore come 9999‑12‑31 è usato come segnaposto per “nessuna data” o “data non impostata”. Se su quell’intervallo applichi ingenuamente MAX oppure MAXIFS senza filtri, Excel considera 9999‑12‑31 una data validissima e, essendo la più alta possibile, la restituisce come massimo. Lo stesso avviene quando la colonna contiene celle apparentemente vuote ma in realtà piene di stringhe vuote ("") o zeri formattati come data.

La soluzione consiste nel ignorare esplicitamente i vuoti reali e, se presente, escludere il segnaposto dal calcolo. Qui sotto trovi diverse procedure pronte all’uso per ogni versione di Excel.

Dati di esempio e risultato atteso

Immaginiamo di avere nella colonna A una serie di date con alcune celle vuote e, in qualche riga, la data fittizia 9999‑12‑31. L’obiettivo è ottenere la data massima effettiva tra le date reali inserite, ignorando i vuoti e (se necessario) scartando la data segnaposto.

ApproccioFormula (o procedura)Quando usarlaNote utili
Formula matrice classica=MAX(IF(ISBLANK(A:A),0,A:A))confermare con Ctrl+Shift+Invio nelle versioni pre‑Microsoft 365Tutte le versioni di ExcelSostituisce i vuoti con 0 (prima del 1900‑01‑01), quindi MAX non è inficiato. Compatibile con file datati o ambienti misti.
MAXIFS con criterio di non‑vuoto=MAXIFS($D$3:$D$8,$D$3:$D$8,"<>")
Oppure con ulteriore condizione:
=MAXIFS($D$3:$D$8,$A$3:$A$8,12,$D$3:$D$8,"<>")
Excel 2019+ e Microsoft 365Il criterio "<>" dice a MAXIFS di considerare solo le celle non vuote. Evita la 9999, ma se la 9999 è presente e non vuoi considerarla, aggiungi un criterio per escluderla.
Funzioni dinamiche (Microsoft 365)=MAX(FILTER(A:A, A:A<>""))Microsoft 365FILTER estrae solo le celle piene; MAX trova la più recente. Sintassi leggibile, nessuna combinazione di tasti speciale.
Tabella pivotTrascinare Date nei Valori (impostare “Max”) e i campi di classificazione (ID, Tipo, Stato) nelle RigheQualsiasi versioneOttima per analisi ripetute o riepiloghi per categoria senza scrivere formule.

Soluzioni passo‑passo con formule pronte

Formula matrice classica (compatibile con tutte le versioni)

Se lavori in un ambiente misto o con versioni precedenti a Microsoft 365, questa formula è un evergreen:

=MAX(IF(ISBLANK(A2:A1000),0,A2:A1000))

  • Come confermare: nelle versioni pre‑365 premi Ctrl+Shift+Invio (CSE) per trasformarla in formula matrice; in Microsoft 365 è sufficiente Invio.
  • Cosa fa: per ogni cella vuota restituisce 0; altrimenti restituisce il valore della cella. MAX ignora i testi ed estrae il più grande tra i numeri di serie data.
  • Variazione robusta: se nel tuo intervallo compaiono stringhe vuote ("") provenienti da formule, puoi forzare la condizione “non vuoto” con LEN:
    =MAX(IF(LEN(A2:A1000)>0,A2:A1000))
  • Escludere un segnaposto (es. 9999‑12‑31):
    =MAX(IF( (A2:A1000<>"")*(A2:A1000<>DATE(9999,12,31)) ,A2:A1000)) (confermare CSE se non sei in 365)
  • Gestire l’assenza totale di date: per evitare 0 (00/01/1900), avvolgi con IFERROR:
    =IFERROR(MAX(IF(LEN(A2:A1000)>0,A2:A1000)),"")

MAXIFS con criterio di non‑vuoto (Excel 2019+ e Microsoft 365)

MAXIFS è più leggibile quando vuoi filtrare l’intervallo della stessa natura:

=MAXIFS($A$2:$A$1000,$A$2:$A$1000,"<>")

  • Ulteriore condizione (per esempio “ID = 12”):
    =MAXIFS($A$2:$A$1000,$B$2:$B$1000,12,$A$2:$A$1000,"<>")
  • Escludere il segnaposto 9999‑12‑31:
    =MAXIFS($A$2:$A$1000,$A$2:$A$1000,"<>",$A$2:$A$1000,"<>"&DATE(9999,12,31))
  • Nota sulla presenza di stringhe vuote (""): il criterio "<>" funziona perché considera non vuote le celle che contengono una stringa, anche se è vuota (""). Se vuoi ignorare anche quelle, aggiungi un criterio come ">0" quando sei certo che le date siano numeri positivi:
    =MAXIFS($A$2:$A$1000,$A$2:$A$1000,">0")

Funzioni dinamiche (Microsoft 365): FILTER + MAX

Il modo più moderno e pulito è filtrare le sole celle piene e poi calcolare il massimo:

=MAX(FILTER(A2:A1000, A2:A1000<>""))

  • Escludere la data segnaposto:
    =MAX(FILTER(A2:A1000, (A2:A1000<>"")*(A2:A1000<>DATE(9999,12,31))))
  • Più criteri (per esempio “Stato = Chiuso”):
    =MAX(FILTER(A2:A1000, (A2:A1000<>"")*(C2:C1000="Chiuso")))
  • Versione con LET per leggibilità:
    =LET(rng,A2:A1000, MAX(FILTER(rng, (rng<>"")*(rng<>DATE(9999,12,31)) )))
  • Gestione assenza di dati: fornisci un valore “se vuoto” con il terzo argomento di FILTER:
    =MAX(FILTER(A2:A1000, A2:A1000<>"", 0)) restituisce 0 se non ci sono date filtrate. Accoppia con IF o IFERROR per mostrare cella vuota:
    =IFERROR(MAX(FILTER(A2:A1000, A2:A1000<>"")),"")

Tabella pivot: massimo per gruppo senza formule

Quando ti serve la data più recente per categoria (ad es. per ID, Tipo, Stato), la tabella pivot è rapidissima:

  1. Converte l’intervallo in Tabella: seleziona i dati → Inserisci > Tabella.
  2. Inserisci una Tabella pivot: Inserisci > Tabella pivot.
  3. Nel riquadro campi, trascina i campi di classificazione (ad es. ID, Stato) nell’area Righe.
  4. Trascina il campo Data nell’area Valori e imposta il riepilogo su Max.
  5. Facoltativo: applica un Filtro o uno Slice per nascondere le 9999‑12‑31 prima del calcolo (o puliscile a monte con Power Query).

La pivot non richiede combinazioni di tasti speciali, si aggiorna con un clic e scala bene su dataset molto grandi.

Scenari tipici e formule “copia‑incolla”

Massimo su una colonna con alcune celle vuote

=MAXIFS($A$2:$A$1000,$A$2:$A$1000,"<>")

Massimo su una colonna escludendo sia vuoti sia 9999‑12‑31

=MAXIFS($A$2:$A$1000,$A$2:$A$1000,"<>",$A$2:$A$1000,"<>"&DATE(9999,12,31))

Massimo filtrato per categoria (es. ID = 12), ignorando vuoti

=MAXIFS($A$2:$A$1000,$B$2:$B$1000,12,$A$2:$A$1000,"<>")

Massimo per ciascuna riga tra più colonne (orizzontale), ignorando celle vuote

Per una riga (es. da B2 a G2): =MAX(IF(B2:G2="",0,B2:G2)) come formula matrice (CSE nelle versioni pre‑365). In 365:
=MAX(FILTER(B2:G2,B2:G2<>""))

Massimo per ciascun gruppo in una tabella (versione dinamica 365)

Con una tabella denominata tbl avente colonne Gruppo e Data:
=LET(g,UNIQUE(tbl[Gruppo]), CHOOSE({1,2}, g, MAP(g, LAMBDA(x, MAX(FILTER(tbl[Data], (tbl[Gruppo]=x)*(tbl[Data]<>"")))))))

La formula crea una tabella a due colonne con gruppo e data massima ignorando i vuoti.

Qualità dei dati: come riconoscere i “falsi vuoti”

  • Stringhe vuote (""): molte formule restituiscono "" per “nascondere” il risultato. Queste celle non sono vuote; ISBLANK restituisce FALSE. Il criterio "<>" di MAXIFS le considera comunque non vuote.
  • Zero formattati come data: se una cella contiene 0 con formato data, Excel visualizza 00/01/1900. Filtra con ">0" oppure sostituiscilo con vuoto.
  • Date come testo: valori con apostrofo iniziale (’2024‑05‑31) o non riconosciuti dal sistema regionale sono testo; MAX/MAXIFS li ignora. Converti con Testo in colonne o DATEVALUE/VAL.DATA.
  • Segnaposti alti (es. 2099‑12‑31, 9999‑12‑31): escludili con un criterio aggiuntivo, ad esempio "<"&DATE(2099,12,31), se nel dominio dei dati le date reali non superano un certo anno.

Prestazioni e buone pratiche

  1. Evita l’intera colonna quando possibile: preferisci intervalli definiti (A2:A1000) o colonne di Tabelle strutturate (tbl[Data]) per ridurre i calcoli.
  2. Usa MAXIFS per criteri semplici: è ottimizzato e più leggibile delle matrici complesse.
  3. Dinamiche 365 per pipeline pulite: FILTER + MAX rende esplicita la logica e semplifica i controlli di qualità.
  4. Formattazione: imposta un formato data appropriato alla cella con il risultato; ricorda che il risultato è un numero seriale.
  5. Controlli di coerenza: affianca un conteggio dei non vuoti (=COUNTA(A2:A1000)) e, se opportuno, un conteggio degli errori (=COUNTIF(A2:A1000,"#N/A")) o dei testi (=COUNTIF(A2:A1000,"*")).
  6. Ambienti eterogenei: se operi tra 365 e versioni 2016/2013, prediligi formule compatibili (matrici classiche o MAXIFS se disponibile). Evita dipendenze da funzioni non presenti.
  7. Sistema data 1900 vs 1904: su alcune installazioni Mac può essere attivo il sistema 1904. Se scambi file, verifica che il sistema data sia uniforme per evitare scostamenti di 4 anni e 1 giorno.

Checklist rapida (prima di pubblicare la formula)

  • I “vuoti” sono davvero vuoti? (nessun 0, nessun "")
  • Devo escludere valori segnaposto (9999‑12‑31, 2099‑12‑31)?
  • L’intervallo è limitato e non l’intera colonna?
  • Ho impostato un formato data sul risultato?
  • Se nessuna data è presente, cosa deve mostrare la cella? (gestione IFERROR)

Esempio completo: dal problema alla soluzione

Supponiamo di avere nella colonna D le date di chiusura ticket (D3:D8) e nella colonna A l’ID del cliente (A3:A8). Alcune celle sono vuote, altre contengono 9999‑12‑31. Vogliamo la data di chiusura più recente per il cliente 12, ignorando i vuoti e scartando la 9999.

Formula con MAXIFS (Excel 2019+ / 365):

=MAXIFS($D$3:$D$8,$A$3:$A$8,12,$D$3:$D$8,"<>",$D$3:$D$8,"<>"&DATE(9999,12,31))

Formula dinamica (365) equivalente:

=LET(rng,$D$3:$D$8, ids,$A$3:$A$8, MAX(FILTER(rng,(rng<>"")(rng<>DATE(9999,12,31))(ids=12))))

Formula matrice classica (tutte le versioni):

=MAX(IF( ($A$3:$A$8=12) ($D$3:$D$8<>"") ($D$3:$D$8<>DATE(9999,12,31)), $D$3:$D$8 )) (CSE nelle versioni non 365)

Pulizia preventiva: Power Query e sostituzioni

Se il file contiene sistematicamente date segnaposto o zeri mascherati, valuta una pulizia a monte:

  • Power Query: sostituisci 9999‑12‑31 con null (vuoto), converti le colonne in tipo Data e carica in Excel. Le formule restano semplici (MAXIFS(...,"<>")).
  • Trova & Sostituisci: seleziona la colonna → Ctrl+HTrova 9999-12-31Sostituisci con vuoto.

Localizzazione delle funzioni (Italiano & Inglese)

Molti team lavorano con interfacce localizzate. Ecco la mappa delle funzioni usate:

IngleseItalianoNote
MAXMAXIdentica
MAXIFSMAX.PIÙ.SEDisponibile da Excel 2019
FILTERFILTROSolo Microsoft 365
ISBLANKVAL.VUOTOControlla il “vuoto reale”
COUNTACONTA.VALORIConta celle non vuote (inclusi "")
IFSEStruttura SE(condizione; valoresevero; valoresefalso)
IFERRORSE.ERROREGestione errori elegante
DATEDATACostruisce una data dal trittico anno‑mese‑giorno

Domande frequenti (FAQ)

Perché il risultato mostra 00/01/1900?
Probabilmente la formula ha restituito 0 (nessuna data valida trovata). Avvolgi con IFERROR(...,"") o verifica che l’intervallo contenga almeno una data numerica > 0.

MAX restituisce un errore: cosa controllo?
Se nell’array entrano errori (#N/D, #VALORE!) e non vengono filtrati, il risultato può propagare l’errore. Usa IFERROR o filtra solo i numeri: =MAX(FILTER(A2:A1000,ISNUMBER(A2:A1000))) (365) oppure una matrice che sostituisce gli errori con 0.

Come faccio a sapere se una cella “vuota” contiene in realtà "" o spazi?
Test rapido: =LEN(A2). Se il risultato è > 0, non è un vuoto reale. Puoi “pulire” con TRIM/ANNULLA.SPAZI e CLEAN/PULISCI.

Posso usare riferimenti a tabella?
Sì, è consigliato. Esempio: =MAXIFS(tbl[Data],tbl[Data],"<>"). Scala meglio e segue automaticamente l’espansione della tabella.

Come evito che la 9999‑12‑31 si propaghi nelle formule di riga?
Escludila a monte nei criteri ("<>"&DATE(9999,12,31)) o sostituiscila con null tramite Power Query/Find&Replace.

Raccomandazioni pratiche (riassunto)

  1. Verificare i “blank” reali: celle apparentemente vuote possono contenere uno zero o una formula ="". In tal caso il filtro "<>" funziona, ma ISBLANK restituisce FALSE.
  2. Formattazione: dopo aver ottenuto il numero seriale massimo, applicare un formato data appropriato.
  3. Prestazioni: su fogli di grandi dimensioni, preferire un intervallo definito (es. A2:A1000) anziché l’intera colonna per evitare calcoli lenti.
  4. Versione di Excel: se l’ambiente è eterogeneo (alcuni utenti 365, altri 2016), adottare la sintassi più compatibile (MAXIFS o formula matrice).
  5. Controlli di qualità: affiancare la formula MAX con un rapido conteggio dei valori non vuoti (=COUNTA(A:A)) per accertarsi che non vi siano date fuori intervallo o celle “sporcate”.

Conclusioni

Per ottenere la data più recente ignorando le celle vuote in Excel hai più strade, tutte efficaci. Se disponi di Excel 2019 o Microsoft 365, MAXIFS(...,"<>") è spesso la scelta più pulita; se preferisci la massima compatibilità, la matrice classica resta imbattibile; con Microsoft 365, FILTER + MAX offre la miglior leggibilità e combinabilità con altri criteri. Non dimenticare la pivot quando ti servono riepiloghi per categoria senza scrivere formule. E, soprattutto, cura la qualità dei dati: distinguere i vuoti reali dalle stringhe vuote e neutralizzare i segnaposto (come 9999‑12‑31) garantisce risultati solidi e report affidabili.

Indice