felet ”cirkulärt beroende upptäckt” i Google Sheets är ett mycket vanligt fel som kan uppstå när du använder nästan vilken formel som helst. När felet circular dependency detected visas i ditt Google-Kalkylark betyder det att formeln hänvisar till ett intervall som innehåller själva formeln, eller med andra ord när formelinmatningen är beroende av utgången.
om du vill åtgärda felet för upptäckt av cirkulärt beroende i Google Sheets gör du någon av följande ändringar i kalkylarket:
- flytta din formel till en annan cell som inte finns inom det eller de intervall som formeln hänvisar till
- eller justera referensen i din formel så att den inte hänvisar till ett intervall som innehåller själva formeln
Cirkelberoende fel kan också uppstå när två formler hänvisar till det intervall som den andra formeln finns i, även om formeln inte hänvisar till sig själv(dvs. sin egen plats). På samma sätt som en enda formels ingång inte kan vara beroende av data som bestäms av sin egen utgång, kan två formler inte samtidigt vara beroende av varandras utgång. Detta kan orsaka en förvirrande situation där en fel formel orsakar två formelfel.
i den här artikeln kommer jag att gå igenom flera olika exempel på hur du kan uppleva detta cirkulära beroende upptäckt fel i Google Sheets, och jag kommer också att visa dig hur du åtgärdar felet i varje situation.
när ett cirkulärt beroendefel uppstår i kalkylbladet kommer cellen som innehåller formelfelet att visa en liten röd triangel i det övre högra hörnet av cellen, och celltexten säger ”#REF!”.
när du håller muspekaren över cellen som har detta fel kommer en ruta att dyka upp som visar följande meddelande, som visas på bilden nedan:
”cirkulärt beroende upptäckt. För att lösa med iterativ beräkning, se Arkiv >Kalkylarkinställningar.”
vanligtvis behöver du inte justera dina kalkylarkinställningar för att åtgärda detta fel, eftersom felet i de flesta fall löses genom att göra justeringar av dina formelreferenser och platsen där formeln finns.
när din formel ligger inom det område som den hänvisar till betyder det att formelinmatningen är ”beroende” av utgången, vilket inte är möjligt att beräkna och orsakar ett fel.
här är en analogi som hjälper till att förklara felet. Det här är ungefär som om du fick följande matematiska problem:
Fråga 1: Dela 10 med svaret på Fråga 1.
detta är omöjligt att lösa eftersom utgången/svaret inte kan vara känt innan problemet faktiskt löses.
eller i fallet med två formler som hänvisar till varandras utgång/plats, här är en annan analogi. Det här är som att få de två följande matematiska problemen:
Fråga 1: Vad är svaret på Fråga 2?
fråga 2: Vad är svaret på Fråga 1?
återigen kan detta inte lösas. Svaret på varje fråga är beroende av den andra, vilket får ditt sinne att springa i cirklar… därav frasen ”cirkulärt beroende”.
låt inte detta få dig att känna dig förvirrad, för det är poängen är att denna logik orsakar ett fel. Allt du behöver veta är varför det händer och hur man fixar det.
så låt oss gå igenom några faktiska exempel på att lösa detta ”circular dependency detected” – fel i ditt Google-kalkylblad.
så här åtgärdar du det cirkulära beroendet upptäckta felet
Låt oss ta en titt på det enklaste exemplet på det cirkulära beroendet upptäckta felet.
nedan visar bilden en formel som helt enkelt hänvisar till en enda cell. Problemet är dock att cellen som formeln hänvisar till är den cell som formeln matas in i (formeln i cell A1 hänvisar till cell A1).
som du kan se har detta orsakat ett cirkulärt beroendefel.
följande formel orsakar ett fel när den matas in i cell A1:
= A1
för att åtgärda felet kan vi antingen flytta formeln till en annan cell eller ändra referensen i formeln så att den hänvisar till en annan cell.
i det här fallet kommer vi att ändra cellreferensen till cell B1.
som du kan se i bilden nedan har denna justering fixat det cirkulära beroendefelet.
följande formel har justerats och löser felet:
= B1
nu visar cell A1 texten som finns i cell B1.
Fixing circular dependency when summing
en vanlig situation där du kan uppleva felet ”circular dependency detected” är när du summerar i Google Sheets. Detta händer oftast när din SUM-formel finns i samma kolumn som den hänvisar till, och när formelreferensen fångar hela kolumnen.
bilden nedan visar en enkel SUM-formel som försöker summera siffrorna i cellerna A1 till A5.
men som du kan se hänvisar SUM-formeln till hela kolumnen (A). Eftersom summaformeln matas in i en cell i kolumn A (A6) orsakar detta ett cirkulärt beroende upptäckt fel.
följande formel orsakar ett fel när det anges någonstans i kolumn A:
= SUM (A1:A)
för att åtgärda detta fel justerar vi referensen i formeln så att den bara summerar värdena i cellerna ovanför den.
så istället för att försöka summera hela kolumnen kommer vi att ange en avslutande rad i referensen (en rad som ligger ovanför summan formel).
för att göra detta, ändra helt enkelt summan till A1:A5.
detta fixar det cirkulära beroendefelet, som visas i bilden nedan.
följande formel har justerats och löser felet:
= SUM(A1: A5)
nu summan formeln i bilden ovan, framgångsrikt Summerar celler A1 till A5. (1+2+3+4+5=15)
fixa cirkulärt beroende när du filtrerar
i det sista exemplet var vi tvungna att justera raderna i formelreferensen för att fixa det cirkulära beroendefelet, men låt oss ta en titt på ett exempel där vi kommer att justera kolumnerna i referensen för att lösa felet.
i det här exemplet, låt oss säga att vi har en lista över skolmaterial och deras priser in i ett kalkylblad, och vi vill filtrera data med en formel så att en lista med objekt som kostar mer än $1 visas.
som du kan se i bilden nedan har FILTERFORMELN ett” cirkulärt beroende upptäckt ” – fel. Detta orsakas av referensen till källområdet, vilket är en kolumn för bred (med tanke på var filterformeln har placerats).
om formeln hänvisar till intervallet A2: D, som innehåller kolumn D, kan formeln inte placeras i kolumn D.
följande formel orsakar ett fel när den matas in i cell D2:
= FILTER (A2: D, C2:C>1)
för att åtgärda felet som visas i bilden ovan, ändra intervallet som refererar till källdata från A2:D till A2:C.
efter att denna justering har gjorts, är felet fixat och FILTERFORMELN fungerar korrekt.
följande formel har justerats och löser felet:
= FILTER (A2: C, C2:C>1)
nu filtreras skolmaterialet för att visa en lista över objekt som kostar mer än $1.
detta innehåll skapades ursprungligen och skrevs av SpreadsheetClass.com
Fixing circular dependency with if/then statement
Låt oss nu ta en titt på ett mer komplext exempel som kan hända med alla som använder formler i sina kalkylblad. I det här exemplet finns det två olika formler som interagerar, och eftersom en av dem ställdes in felaktigt visar båda ett fel på grund av att var och en hänvisar till (beroende av) varandra.
(för mer förklaring om varför detta händer, se toppen av den här artikeln)
när ett fel händer som det som visas i bilden nedan kan det ibland vara svårt att avgöra vilken formel som har misstaget på grund av det dubbla felet som det orsakar. Som i alla felsökningsscenarier … det bästa du kan göra är att börja från början och spåra dig igenom data/system tills du hittar misstaget.
så här är scenariot i det här exemplet: kolumn A indikerar slutförandet av en uppgift med 1 och 0. formlerna i kolumn B var avsedda att hänvisa till data i kolumn A och att visa texten ”Ja” eller ”nej”, beroende på om varje cell i kolumn A hade ett nummer 1 eller ett nummer 0. Sedan hänvisar kolumn C till cellerna i kolumn B och visar orden ”komplett” eller ”inte komplett”, beroende på om varje cell i kolumn B säger ja eller nej.
kort sagt, om cell A3 innehåller siffran 1, ska cell B3 säga ”Ja” och cell C3 ska säga ”komplett”.
men problemet är att formeln i cell B3 … istället för att hänvisa till 1 och 0 i kolumn A, gjorde arkets skapare ett misstag och hänvisade till kolumn C (som i sin tur hänvisar till det). Detta skapar ett cirkulärt beroendefel i båda formlerna, även om tekniskt bara en av formlerna ställdes in felaktigt.
denna typ av blandning är vanligt när du använder många formler i dina lakan, och speciellt när du har skapat hela dagen och är trött.
för att fixa denna formel, som fixar båda de cirkulära beroendefelen, följ instruktionerna nedan bilden.
följande formel orsakar ett fel när den matas in i cell B3, på grund av en annan formel i cell C3 som refererar till cell B3:
= IF (C3= ”komplett”, ”ja”, ”nej”)
i det här fallet, för att åtgärda felet, handlar det mer än bara om att ändra referensen i formeln, eftersom hela formeln skrivits felaktigt av misstag. Så kom ihåg att formlerna i kolumn B ska visa ordet ”ja” i varje rad/cell om det finns ett nummer 1 i de intilliggande cellerna i kolumn A (och ordet ”nej” om det finns en 0 i den intilliggande cellen).
den korrigerade logiken för formeln i cell B3 är följande: om cell A3 är lika med 1, visa sedan ordet ”Ja”, och om inte, visa sedan ordet ”nej”.
följande formel har justerats och löser felet:
= om (A3=1, ”ja”, ”nej”)
nu fungerar båda formlerna korrekt, och båda de cirkulära beroendefelen har fixats samtidigt genom att korrigera en formel.
nu hänvisar kolumn B till kolumn A, och sedan hänvisar kolumn B till kolumn C, som det borde vara. Formlerna är inte längre samtidigt beroende av varandras produktion.
Fix circular dependency error när du hänvisar till en annan flik
ett mycket vanligt sätt att köra in i ”circular dependency detected” – felet är när du hänvisar till en annan flik i din formel och du glömmer att inkludera fliknamnet i din referens.
data nedan visar en lista över kläder objekt och deras storlekar som anges i ett kalkylblad. Vi vill filtrera data med hjälp av en formel i en annan flik, för att bara visa objekt som har storleken ”Medium”.
bilden nedan visar en FILTERFORMEL som anges i cell A2, på en annan flik än den som innehåller källdata som visas ovan.
problemet är att fliknamnet utelämnades när formeln matades in.
eftersom källområdet är A2: B och formeln finns i cell A2 betyder det att formeln hänvisar till sig själv. Eller med andra ord, cellen som formeln anges i, ligger inom det område som formeln hänvisar till. Detta orsakar ett cirkulärt beroendefel.
följande formel orsakar ett fel när den matas in i cell A2:
= filter (A2: B, B2: B = ”Medium”)
för att åtgärda detta fel lägger du bara till fliknamnet i referenserna i filterformeln.
referensen till källområdet kommer att vara ’en annan flik’!A2: B (apostrofer måste läggas till före och efter fliknamnsreferensen, när det finns ett mellanslag i fliknamnet).
följande formel har justerats och löser felet:
=filter(’en annan flik’!A2: B, ’En Annan Flik’!B2: B= ”Medium”)