Excel per Mac: risolvere l’errore “There are circular references in an open workbook” (v16.85–16.86)

Su Excel per Mac (v. 16.85–16.86) può comparire il messaggio “There are circular references in an open workbook”, ma il comando per trovarli sembra assente o non elenca nulla. Qui trovi una procedura completa per far riapparire il Ribbon “Formule”, scovare la cella incriminata e far sparire l’avviso.

Indice

Che cosa sono i riferimenti circolari e perché Excel avvisa

Un riferimento circolare si verifica quando uno o più calcoli dipendono indirettamente dal risultato di sé stessi: il caso più semplice è una cella che si riferisce a sé (es. =A1+1 in A1), ma nella pratica i “circoli” nascono quasi sempre da catene su più celle e/o fogli. Excel li blocca perché impediscono un calcolo deterministico; l’eccezione è quando l’utente abilita il calcolo iterativo per modelli intenzionalmente ricorsivi.

Sulle build Mac 16.85–16.86 l’avviso può apparire anche se il foglio attivo non contiene circoli: spesso il loop è in un’altra cartella di lavoro ancora aperta, in un foglio nascosto o in un nome definito. Se il Ribbon “Formule” è nascosto, il comando “Verifica errori › Riferimenti circolari” non è raggiungibile: da qui nasce la sensazione che “non si trovi nulla”.

Diagnostica rapida

  • Ribbon invisibile? Mostra la barra multifunzione (Ribbon) e verifica che la scheda “Formule” sia attiva.
  • Più file aperti? Il messaggio dice an open workbook: il problema può trovarsi in un’altra cartella di lavoro.
  • Fogli nascosti? Anche una formula in un foglio “Hidden” o “VeryHidden” fa scattare l’avviso.
  • Nomi definiti ricorsivi? Un nome definito che si richiama da sé è un circolo a tutti gli effetti.
  • Versione e componenti aggiuntivi? Aggiorna Excel e, in caso, disattiva componenti aggiuntivi che caricano file in background.

Soluzioni collaudate in sintesi

PassoCosa farePerché funziona
1. Mostrare il RibbonSe vedi solo i menu “File, Modifica, …” attiva la barra multifunzione (Ribbon) da Visualizza › Mostra barra multifunzione o usando ☑︎ Mostra sempre il Ribbon.Il comando Formule › Verifica errori › Riferimenti circolari è disponibile solo sul Ribbon.
2. Controllare tutte le cartelle di lavoro aperteIl messaggio parla di an open workbook: il riferimento circolare può trovarsi in un’altra cartella di lavoro ancora aperta. Passa da Finestra › Passa a o chiudi tutto tranne il file sospetto, quindi riesegui la verifica.Excel segnala i circoli anche se sono in un file diverso da quello attivo.
3. Verificare fogli e cartelle nascosteIn Finestra › Scopri (Unhide) mostra eventuali file nascosti. Nel file interessato usa Formato › Fogli › Scopri per rivelare fogli nascosti.Formule invisibili possono generare circoli.
4. Cercare formule “non di cella”Controlla:
• Nomi definiti (Formule › Gestione nomi)
• Convalida dati
• Formattazione condizionale
• Pivot o campi calcolati
Anche questi oggetti possono contenere formule che ricorrono su sé stesse.
5. Aggiornare o riparare ExcelPassa a v. 16.86 o successiva (Microsoft AutoUpdate). Se il messaggio persiste, esegui un riavvio pulito o reimposta le preferenze.Alcuni avvisi “fantasma” sono stati corretti in build recenti.

Procedura completa passo‑passo

Mostrare e configurare la scheda “Formule” su Mac

  1. Apri Excel e vai su VisualizzaMostra barra multifunzione. Se vuoi che resti sempre visibile, spunta “Mostra sempre la barra multifunzione”.
  2. Controlla che la scheda Formule sia disponibile. Se non la vedi, apri Excel › Preferenze › Barra multifunzione e barra degli strumenti e metti il segno di spunta su “Formule” (e sui gruppi “Verifica errori”, “Valuta formula”, “Dipendenze”).
  3. Usa Formule › Verifica errori › Riferimenti circolari. Se il menu è attivo ma non elenca celle, passa al file successivo (vedi sezione seguente).

Controllare tutte le cartelle di lavoro aperte

Il testo dell’avviso è esplicito: si riferisce a una cartella di lavoro aperta, non necessariamente a quella in primo piano. Per isolare la responsabile:

  1. Apri il menu Finestra › Passa a per scorrere in sequenza tutte le finestre di Excel (anche ridotte a icona).
  2. Chiudi i file non necessari: File › Chiudi. In alternativa, usa File › Chiudi tutto e riapri solo il file sospetto.
  3. Ripeti Formule › Verifica errori › Riferimenti circolari nel file rimasto. Se ora viene proposta una cella, hai trovato la fonte.

Tip: componenti aggiuntivi (.xlam) o file personali (es. PERSONAL.XLSB) possono restare aperti senza una finestra visibile. Controllali in Strumenti › Componenti aggiuntivi di Excel… e disattivali temporaneamente per test.

Mostrare cartelle e fogli nascosti

Una cartella di lavoro può essere nascosta (comando Nascondi) e restare attiva in background.

  1. Vai su Finestra › Scopri… e, se presente, seleziona la cartella da rendere visibile.
  2. Nel file in analisi, mostra eventuali fogli nascosti: Formato › Foglio › Scopri…. Se ci sono fogli “VeryHidden” (non svelabili dal menu), usa una macro veloce: Sub ScopriTuttiIFogli() Dim sh As Worksheet For Each sh In ActiveWorkbook.Worksheets sh.Visible = xlSheetVisible Next sh End Sub
  3. Una volta visibili, riesegui il controllo dei riferimenti circolari dalla scheda Formule.

Cercare nei nomi definiti e in altri “contenitori” di formule

I nomi definiti sono il nascondiglio n. 1 per i circoli: un nome come Totale che si riferisce a =Totale + SOMMA(A:A) è ricorsivo e scatena l’avviso anche senza che nessuna cella mostri direttamente la formula.

  1. Apri Formule › Gestione nomi e scorri l’elenco. Per ogni nome, osserva “Riferito a:”.
  2. Se noti che il nome appare nella propria definizione, modificalo per eliminare l’autoriferimento (oppure eliminalo se superfluo).
  3. Controlla anche:
    • Convalida dati: Dati › Convalida dati. Le regole “Formula personalizzata” che richiamano nomi ricorsivi possono riattivare l’avviso.
    • Formattazione condizionale: Home › Formattazione condizionale › Gestisci regole. Verifica regole basate su nomi o formule complesse.
    • Pivot e campi calcolati: verifica eventuali formule che puntano a intervalli calcolati tramite nomi.

Usare gli strumenti di audit delle formule

  • Riferimenti circolari: Formule › Verifica errori › Riferimenti circolari elenca una o più celle coinvolte. Clicca per saltare alla cella.
  • Precedenti/Successivi: seleziona una cella sospetta e usa Formule › Mostra precedenti e Mostra successivi per visualizzare il grafo di dipendenze. Ripeti più volte per estendere il raggio.
  • Valuta formula: in Formule › Valuta formula puoi eseguire passo‑passo l’interpretazione di Excel e scoprire dove nasce il rientro sul risultato.
  • Mostra formule: Formule › Mostra formule espande la visualizzazione delle formule nell’intero foglio per facilitare una ricerca testuale (es. cerca “A1” o un nome sospetto).

Controllare lo stato del calcolo iterativo

Se il calcolo iterativo è abilitato, Excel consente i circoli per convergere a un risultato per approssimazioni. Per siti produttivi è preferibile disattivarlo durante la diagnosi:

  1. Vai su Excel › Preferenze › Calcolo.
  2. Disattiva “Abilita calcolo iterativo” (oppure imposta Numero massimo di iterazioni e Modifica massima a valori molto severi per intercettare loop imprevisti).
  3. Ricalcola completamente (Formule › Ricalcola) e riprova la voce “Riferimenti circolari”.

Aggiornare Excel e fare un riavvio pulito

  1. Apri Guida › Controlla aggiornamenti per avviare Microsoft AutoUpdate e installare la versione 16.86 o successiva.
  2. Disabilita temporaneamente i componenti aggiuntivi: Strumenti › Componenti aggiuntivi di Excel… e togli la spunta da quelli non essenziali.
  3. Chiudi Excel, riavvia il Mac, riapri solo il file interessato e verifica di nuovo. Se l’avviso scompare, riattiva i componenti uno alla volta.

Strategie pratiche per scovare i circoli “invisibili”

Ricerca mirata con parole chiave

Attiva “Mostra formule”, poi usa Modifica › Trova per cercare:

  • indirizzi ricorrenti ($A$1, Foglio2!$B$5)
  • nomi di intervallo sospetti (Totale, _Somma, ecc.)
  • operatori di accumulo (=…+Cella, =Cella*…) sulle celle chiave del modello

Isolamento progressivo

  1. Duplica la cartella di lavoro e lavora sulla copia.
  2. Disattiva fogli interi: svuota temporaneamente formule nei fogli secondari (copiandole come valori) per vedere se l’avviso scompare; ripristina poi con Annulla.
  3. Escludi blocchi: sostituisci gruppi di formule con valori statici per restringere l’area problematica.

Macro pronte all’uso per l’analisi

Se hai abilitato le macro su Mac, puoi automatizzare la diagnosi. Le macro seguenti lavorano sulle cartelle di lavoro aperte, includono fogli nascosti e creano un report dedicato. Non modificano dati.

Mostrare tutti i fogli in tutte le cartelle aperte

Sub ScopriTuttiIFogliDiTuttiIFile()
    Dim wb As Workbook, sh As Worksheet
    For Each wb In Application.Workbooks
        If Not wb Is Nothing Then
            If wb.Name <> "PERSONAL.XLSB" And wb.IsAddin = False Then
                For Each sh In wb.Worksheets
                    sh.Visible = xlSheetVisible
                Next sh
            End If
        End If
    Next wb
End Sub

Individuare nomi definiti potenzialmente ricorsivi

Sub ReportNomiRicorsivi()
    Dim wb As Workbook, nm As Name, r As Long, ws As Worksheet, refers As String
    On Error Resume Next
    Application.ScreenUpdating = False
    ' Crea/azzera il foglio report
    Set ws = Nothing: Set ws = ThisWorkbook.Worksheets("CircularReport")
    If Not ws Is Nothing Then Application.DisplayAlerts = False: ws.Delete: Application.DisplayAlerts = True
    Set ws = ThisWorkbook.Worksheets.Add
    ws.Name = "CircularReport"
    ws.Range("A1:D1").Value = Array("Workbook", "Nome", "Riferito a", "Nota")
    ws.Rows(1).Font.Bold = True
    r = 2
    For Each wb In Application.Workbooks
        If wb.IsAddin = False Then
            For Each nm In wb.Names
                refers = Replace(Replace(nm.RefersTo, " ", ""), "$", "")
                ' Heuristica: il nome appare nella propria definizione
                If InStr(1, refers, Replace(nm.Name, " ", ""), vbTextCompare) > 0 Then
                    ws.Cells(r, 1).Value = wb.Name
                    ws.Cells(r, 2).Value = nm.Name
                    ws.Cells(r, 3).Value = nm.RefersTo
                    ws.Cells(r, 4).Value = "Possibile autoriferimento"
                    r = r + 1
                End If
            Next nm
        End If
    Next wb
    Application.ScreenUpdating = True
    MsgBox "Report completato in 'CircularReport'.", vbInformation
End Sub

Nota: l’euristica riduce la ricerca ma può generare falsi positivi; verifica i risultati nella Gestione nomi.

Scovare autoriferimenti e cicli “a due celle”

Sub TrovaCircoliSemplici()
    Dim wb As Workbook, ws As Worksheet, c As Range, r As Long
    Dim dp As Range, c2 As Range, addr As String
    Dim rep As Worksheet
    On Error Resume Next
    Application.ScreenUpdating = False
    ' Crea/azzera il foglio report
    Set rep = Nothing: Set rep = ThisWorkbook.Worksheets("CircularReport")
    If Not rep Is Nothing Then Application.DisplayAlerts = False: rep.Delete: Application.DisplayAlerts = True
    Set rep = ThisWorkbook.Worksheets.Add
    rep.Name = "CircularReport"
    rep.Range("A1:E1").Value = Array("Workbook", "Foglio", "Cella", "Formula", "Tipo")
    rep.Rows(1).Font.Bold = True
    r = 2
    For Each wb In Application.Workbooks
        If wb.IsAddin = False Then
            For Each ws In wb.Worksheets
                On Error Resume Next
                For Each c In ws.UsedRange.SpecialCells(xlCellTypeFormulas)
                    addr = Replace(c.Address, "$", "")
                    ' Autoriferimento diretto (A1 contiene "A1")
                    If InStr(1, Replace(c.Formula, "$", ""), addr, vbTextCompare) > 0 Then
                        rep.Cells(r, 1).Value = wb.Name
                        rep.Cells(r, 2).Value = ws.Name
                        rep.Cells(r, 3).Value = c.Address
                        rep.Cells(r, 4).Value = c.Formula
                        rep.Cells(r, 5).Value = "Autoriferimento"
                        r = r + 1
                    End If
                    ' Ciclo a due celle A↔B
                    Set dp = Nothing: Set dp = c.DirectPrecedents
                    If Not dp Is Nothing Then
                        If dp.Count = 1 Then
                            Set c2 = dp.Cells(1)
                            If c2.HasFormula Then
                                If Not c2.DirectPrecedents Is Nothing Then
                                    If InStr(1, c2.DirectPrecedents.Address, c.Address, vbTextCompare) > 0 Then
                                        rep.Cells(r, 1).Value = wb.Name
                                        rep.Cells(r, 2).Value = ws.Name
                                        rep.Cells(r, 3).Value = c.Address & " ↔ " & c2.Address(External:=True)
                                        rep.Cells(r, 4).Value = c.Formula & " | " & c2.Formula
                                        rep.Cells(r, 5).Value = "Ciclo 2 celle"
                                        r = r + 1
                                    End If
                                End If
                            End If
                        End If
                    End If
                Next c
            Next ws
        End If
    Next wb
    Application.ScreenUpdating = True
    MsgBox "Analisi completata in 'CircularReport'.", vbInformation
End Sub

Questa macro trova i casi più comuni: autoriferimenti e scambi diretti tra due celle. Per catene più lunghe affidati all’elenco “Riferimenti circolari” di Excel o usa l’analisi manuale con Precedenti/Successivi.

Esempi pratici e casi d’uso

ScenarioCome si manifestaCome risolvere
Nome definito ricorsivoTotale definito come =Totale + SOMMA(Fatture[Importo])Rinomina il nome o sostituiscilo con un riferimento non ricorsivo (es. usa LET all’interno di una formula di cella).
Intervallo dinamico che rientra su sé stessoUna formula che espande una tabella includendo la colonna che contiene la stessa formulaBlocca l’intervallo massimo (es. con INDIRETTO su un range fisso) o sposta la formula fuori dall’area espansa.
Sommario su foglio nascostoUn foglio “Report” nascosto contiene =SOMMA(Totale) dove Totale dipende dal “Report”Scopri il foglio, separa i calcoli di base e il sommario in livelli distinti, rimuovendo il rientro.
Calcolo iterativo abilitato per erroreIl file sembra funzionare ma l’avviso compare talvolta aprendo altri fileDisattiva il calcolo iterativo per diagnosticare; se serve, documenta i modelli che lo richiedono e tienili isolati.

Buone pratiche per prevenire i riferimenti circolari

  • Livella il modello: separa input, calcoli e output in fogli/aree differenti; evita che gli output rifinanzino i propri input.
  • Preferisci nomi “foglio‑locali” quando non necessari a livello di cartella: riducono il rischio di collisioni e autoriferimenti.
  • Blocca gli intervalli con riferimenti assoluti ($A$1) dove opportuno per impedire scivolamenti che creano loop involontari.
  • Evita formulette “di appoggio” nei report che pescano da output finali per poi rientrare negli input (classico feed‑back).
  • Documenta i nomi definiti: aggiungi commenti e una tabella di mappatura “Nome → Riferito a” nel file.

Domande frequenti

Il menu “Riferimenti circolari” è grigio ma vedo il messaggio nel piè di pagina: perché?
Perché il circolo si trova in un altro file aperto o in un foglio nascosto. Chiudi gli altri file (o usali uno per volta) e riesegui il controllo.

È un falso positivo?
Di norma no: c’è quasi sempre almeno una formula ricorsiva. Può restare “appiccicato” dopo aver risolto il problema se una finestra di file nascosto è ancora aperta. Chiudi e riapri Excel.

Le formule di convalida dati o formattazione condizionale causano l’avviso?
Non calcolano valori di cella, ma se appoggiano a nomi definiti ricorsivi possono contribuire a far riemergere l’avviso. Controllale se usano nomi.

Uso LAMBDA ricorsive: è normale?
Sì, le LAMBDA possono richiamarsi (ricorsione) senza essere trattate come circoli “classici”. Il problema sorge quando la LAMBDA, tramite nomi o celle, rientra nel grafo dei calcoli del foglio.

Come faccio a sapere se ho davvero eliminato il circolo?
Quando tutte le cartelle di lavoro aperte sono prive di loop, il messaggio nel piè di pagina scompare e il menu “Riferimenti circolari” non elenca nulla. Tieni aperto un solo file e verifica.

Suggerimenti operativi extra

  • Dipendenze formula: seleziona una cella sospetta, poi Formule › Precedenti/Successivi per visualizzare il grafo delle dipendenze.
  • Lavorare in copia: se il file contiene dati sensibili, duplica la cartella di lavoro, rimuovi i dati e condividi solo la struttura per ricevere aiuto esterno.
  • Automatizzare la scansione: usa le macro proposte per ciclare tra tutte le cartelle di lavoro, i fogli (anche nascosti) e i nomi definiti e segnalare i casi sospetti (utile su Mac se hai abilitato le macro).

Checklist finale

  • Ribbon visibile e scheda “Formule” attiva?
  • Un solo file alla volta aperto durante la diagnosi?
  • Fogli (e cartelle) nascosti svelati?
  • Nomi definiti controllati e ripuliti?
  • Calcolo iterativo disattivato per i test?
  • Excel aggiornato e componenti aggiuntivi disattivati?

In sintesi

Il messaggio non è un “falso positivo”: esiste almeno una formula circolare, spesso nascosta in un’altra cartella di lavoro, in un foglio nascosto o in un nome definito. Attiva il Ribbon, usa Verifica errori su ogni file aperto, scopri eventuali elementi nascosti e aggiorna Excel: quasi sempre una di queste azioni rivela la cella responsabile e fa scomparire l’avviso. Se vuoi fare prima, lancia le macro di diagnosi per generare un report “CircularReport” e concentrarti solo sulle aree realmente sospette.


Riferimento rapido ai comandi (Excel per Mac, ITA)

  • Visualizza › Mostra barra multifunzione
  • Excel › Preferenze › Barra multifunzione e barra degli strumenti
  • Formule › Verifica errori › Riferimenti circolari
  • Formule › Precedenti / Successivi / Valuta formula / Mostra formule
  • Finestra › Scopri (cartelle di lavoro nascoste)
  • Formato › Foglio › Scopri (fogli nascosti)
  • Formule › Gestione nomi
  • Dati › Convalida dati
  • Home › Formattazione condizionale › Gestisci regole
  • Guida › Controlla aggiornamenti (Microsoft AutoUpdate)

Nota operativa: se condividi il file per assistenza, invia una copia anonimizzata (solo struttura e formule) oppure usa un foglio “mock” con dati fittizi: riduce i rischi e accelera la diagnosi.

Indice