de “circulaire afhankelijkheid gedetecteerd” fout in Google Spreadsheets, is een veel voorkomende fout die kan optreden bij het gebruik van bijna elke formule. Wanneer u de circulaire afhankelijkheid gedetecteerde fout weergegeven in uw Google-spreadsheet, betekent dit dat uw formule verwijst naar een bereik dat de formule zelf bevat, of met andere woorden wanneer de formule-invoer afhankelijk is van de uitvoer.
om de circulaire afhankelijkheid gedetecteerde fout in Google Spreadsheets te herstellen, maakt u een van de volgende wijzigingen in uw spreadsheet:
- verplaats uw formule naar een andere cel die niet is opgenomen in het bereik(de bereiken) waar de formule naar verwijst
- of pas de verwijzing in uw formule aan zodat deze niet verwijst naar een bereik dat de formule zelf bevat
er kunnen ook circulaire afhankelijkheidsfouten optreden wanneer twee formules verwijzen naar het bereik waarin de andere formule zich bevindt, zelfs als de formule niet naar zichzelf verwijst (d.w.z. zijn eigen locatie). Op dezelfde manier dat de input van een enkele formule niet afhankelijk kan zijn van data die bepaald wordt door zijn eigen output, kunnen twee formules niet tegelijkertijd afhankelijk zijn van elkaars output. Dit kan een verwarrende situatie veroorzaken waarbij één verkeerde formule twee formulefouten veroorzaakt.
In dit artikel zal ik ingaan op verschillende voorbeelden van hoe u deze circulaire afhankelijkheid gedetecteerde fout in Google Spreadsheets zou kunnen ervaren, en Ik zal u ook laten zien hoe u de fout in elke situatie kunt oplossen.
wanneer een circulaire afhankelijkheidsfout optreedt in uw spreadsheet, zal de cel die de formulefout bevat een klein rood driehoekje in de rechterbovenhoek van de cel weergeven, en de celtekst zal zeggen: “# REF!”.
wanneer u met de muisaanwijzer over de cel gaat die deze fout heeft, verschijnt er een venster dat het volgende bericht weergeeft, zoals in de afbeelding hieronder te zien is:
“circulaire afhankelijkheid gedetecteerd. Zie bestand>Spreadsheet Settings om een oplossing te vinden met iteratieve berekening.”
meestal hoeft u uw spreadsheetinstellingen niet daadwerkelijk aan te passen om deze fout te herstellen, omdat in de meeste gevallen de fout wordt opgelost door aanpassingen aan uw formuleverwijzingen en de locatie waar de formule zich bevindt.
wanneer uw formule zich binnen het bereik bevindt waar het naar verwijst, betekent dit dat de invoer van de formule “afhankelijk” is van de uitvoer, wat niet mogelijk is om te berekenen en een fout veroorzaakt.
hier is een analogie die helpt de fout te verklaren. Dit lijkt op het volgende wiskundeprobleem:
Vraag 1: deel 10 door het antwoord op Vraag 1.
dit is onmogelijk op te lossen omdat de uitvoer/het antwoord niet bekend is voordat het probleem daadwerkelijk is opgelost.
of in het geval van twee formules die verwijzen naar elkaars uitvoer / locatie, is hier een andere analogie. Dit is alsof je de twee volgende wiskundige problemen krijgt:
Vraag 1: Wat is het antwoord op Vraag 2?
vraag 2: Wat is het antwoord op Vraag 1?
nogmaals, dit kan niet worden opgelost. Het antwoord op elke vraag is afhankelijk van de andere, waardoor je geest draait in cirkels… vandaar de uitdrukking “circulaire afhankelijkheid”.
laat dit je niet in de war brengen, want dat is het punt is dat deze logica een fout veroorzaakt. Alles wat je moet weten is waarom het gebeurt, en hoe het te repareren.
dus laten we gaan over een aantal werkelijke voorbeelden van het oplossen van deze “circulaire afhankelijkheid gedetecteerd” fout in uw Google spreadsheet.
How to fix the circular dependency detected error
laten we eens kijken naar het meest eenvoudige voorbeeld van de circular dependency detected error.
hieronder toont de afbeelding een formule die gewoon verwijst naar een enkele cel. Het probleem is echter dat de cel waarnaar de formule verwijst, de cel is waarin de formule is ingevoerd (de formule in cel A1 verwijst naar cel A1).
zoals u kunt zien, heeft dit een circulaire afhankelijkheidsfout veroorzaakt.
de volgende formule veroorzaakt een fout bij het invoeren in cel A1:
= A1
om de fout op te lossen, kunnen we de formule naar een andere cel verplaatsen of de verwijzing in de formule wijzigen zodat deze naar een andere cel verwijst.
in dit geval veranderen we de celverwijzing naar cel B1.
zoals u kunt zien in de afbeelding hieronder, heeft deze aanpassing de circulaire afhankelijkheidsfout opgelost.
de volgende formule is aangepast en lost de fout op:
= B1
nu geeft cel A1 de tekst weer die zich in cel B1 bevindt.
circulaire afhankelijkheid oplossen bij optellen
een veel voorkomende situatie waarin u de fout “circulaire afhankelijkheid gedetecteerd” kunt ervaren, is wanneer u optelt in Google-Spreadsheets. Dit gebeurt het vaakst wanneer uw somformule zich in dezelfde kolom bevindt waarnaar deze verwijst en wanneer de formuleverwijzing de hele kolom vangt.
de afbeelding hieronder toont een eenvoudige somformule, die probeert de getallen in cellen A1 tot en met A5 op te tellen.
maar zoals u kunt zien, verwijst de somformule naar de volledige kolom (A). Omdat de somformule in een cel binnen kolom A (A6) wordt ingevoerd, veroorzaakt dit een cirkelafhankelijke gedetecteerde fout.
de volgende formule veroorzaakt een fout wanneer deze ergens in kolom A wordt ingevoerd:
= SUM (A1:A)
om deze fout op te lossen, passen we de referentie in de formule aan, zodat deze alleen de waarden in de cellen erboven optelt.
dus in plaats van te proberen de hele kolom op te tellen, wijzen we een eindrij aan in de referentie (een Rij die boven de somformule staat).
om dit te doen, wijzigt u eenvoudig het sombereik in A1:A5.
dit lost de circulaire afhankelijkheid fout, zoals weergegeven in de afbeelding hieronder.
de volgende formule is aangepast en lost de fout op:
= SUM (A1: A5)
nu telt de somformule in de afbeelding hierboven met succes cellen A1 tot en met A5. (1+2+3+4+5=15)
circulaire afhankelijkheid oplossen bij het filteren van
In het laatste voorbeeld moesten we de rijen in de formuleverwijzing aanpassen om de circulaire afhankelijkheidsfout op te lossen, maar laten we eens kijken naar een voorbeeld waar we de kolommen in de verwijzing zullen aanpassen om de fout op te lossen.
in dit voorbeeld, laten we zeggen dat we een lijst van schoolbenodigdheden hebben en hun prijzen zijn ingevoerd in een spreadsheet, en we willen de gegevens filteren met een formule zodat een lijst met items die meer dan $1 kosten wordt weergegeven.
zoals u kunt zien in de afbeelding hieronder, heeft de FILTERFORMULE een” circulaire afhankelijkheid gedetecteerd ” fout. Dit wordt veroorzaakt door de verwijzing naar het bronbereik, dat één kolom te breed is (rekening houdend met waar de filterformule is geplaatst).
als de formule verwijst naar het bereik A2: D, dat kolom D bevat, kan de formule niet in kolom D.
de volgende formule veroorzaakt een fout bij het invoeren in cel D2:
= FILTER (A2:D, C2:C>1)
als u de fout wilt herstellen die in de afbeelding hierboven wordt weergegeven, wijzigt u het bereik dat verwijst naar de brongegevens van A2:D, naar A2:C.
nadat u deze aanpassing hebt uitgevoerd, is de fout opgelost en werkt de FILTERFORMULE correct.
de volgende formule is aangepast en lost de fout op:
= FILTER (A2:C, C2:C>1)
nu worden de Schoolbenodigdheden gefilterd om een lijst met items weer te geven die meer dan $1 kosten.
deze inhoud is oorspronkelijk gemaakt en geschreven door SpreadsheetClass.com
circulaire afhankelijkheid fixeren met if / then statement
laten we nu eens kijken naar een complexer voorbeeld, dat kan gebeuren met iedereen die formules gebruikt in hun spreadsheets. In dit voorbeeld zijn er twee verschillende formules die interageren, en omdat een van hen verkeerd is ingesteld, vertonen beide een fout, omdat ze naar elkaar verwijzen (afhankelijk van).
(voor meer uitleg over waarom dit gebeurt, zie de bovenkant van dit artikel)
wanneer een fout optreedt zoals die in de afbeelding hieronder wordt getoond, kan het soms moeilijk zijn om te bepalen welke formule de fout heeft, vanwege de dubbele fout die het veroorzaakt. Zoals in elk scenario voor het oplossen van problemen… het beste ding om te doen is om te beginnen vanaf het begin, en trace uw weg door de gegevens/systeem totdat u de fout te vinden.
hier is het scenario in dit voorbeeld: kolom A geeft de voltooiing aan van een taak met 1 en 0. de formules in kolom B waren bedoeld om te verwijzen naar de gegevens in kolom A en om de tekst “JA” of “nee” weer te geven, afhankelijk van of elke cel in kolom A een nummer 1 of een nummer 0 had. Vervolgens verwijst kolom C naar de cellen in kolom B en geeft de woorden “voltooid” of “niet voltooid” weer, afhankelijk van of elke cel in kolom B ja of nee zegt.
kortom, als cel A3 het nummer 1 bevat, moet cel B3 “ja” zeggen en cel C3 “voltooid”.
maar het probleem is dat de formule in cel B3 … in plaats van te verwijzen naar de 1 ’s en 0′ s in kolom A, de maker van het blad maakte een fout, en verwees naar kolom C (die op zijn beurt verwijst naar het). Dit creëert een circulaire afhankelijkheidsfout, in beide formules, hoewel technisch slechts één van de formules verkeerd is ingesteld.
dit soort mix up is gebruikelijk bij het gebruik van veel formules in uw werkbladen, en vooral wanneer u de hele dag hebt aangemaakt en moe bent.
om deze formule te repareren, die beide circulaire afhankelijkheidsfouten zal oplossen, volgt u de instructies onder de afbeelding.
de volgende formule veroorzaakt een fout bij het invoeren in cel B3, vanwege een andere formule in cel C3 die verwijst naar cel B3:
= IF (C3= “Complete”, “Yes”, “No”)
In dit geval, om de fout op te lossen, is het meer dan alleen een kwestie van het veranderen van de referentie in de formule, omdat de hele formule per ongeluk verkeerd is geschreven. Dus vergeet niet dat de formules in kolom B het woord “ja” in elke rij/cel moeten weergeven als er een nummer 1 in de aangrenzende cellen in kolom A is (en het woord “nee” als er een 0 in de aangrenzende cel is).
de gecorrigeerde logica voor de formule in cel B3 is als volgt: als cel A3 gelijk is aan 1, geeft u het woord “Ja” weer, en zo niet, geeft u het woord “nee”weer.
de volgende formule is aangepast en lost de fout op:
= IF (A3 = 1, “Ja”, “Neen”)
nu werken beide formules goed en beide circulaire afhankelijkheidsfouten zijn tegelijkertijd opgelost door één formule te corrigeren.
nu verwijst kolom B naar kolom A en vervolgens verwijst kolom B naar kolom C, zoals het hoort. De formules zijn niet meer gelijktijdig afhankelijk van elkaars output.
Fix de circulaire afhankelijkheid fout bij het verwijzen naar een ander tabblad
een andere veel voorkomende manier om in de “circulaire afhankelijkheid gedetecteerd” fout, is wanneer u verwijst naar een ander tabblad in uw formule, en u vergeet om de tabnaam op te nemen in uw referentie.
onderstaande gegevens tonen een lijst van kledingartikelen en hun maten in een spreadsheet. We willen de gegevens filteren met behulp van een formule in een ander tabblad, om alleen items te tonen die de grootte “Medium”hebben.
de afbeelding hieronder toont een FILTERFORMULE die wordt ingevoerd in cel A2, op een ander tabblad dan het tabblad dat de hierboven getoonde brongegevens bevat.
het probleem is dat de tabnaam werd weggelaten toen de formule werd ingevoerd.
aangezien het bronbereik A2:B is en de formule zich in cel A2 bevindt, betekent dit dat de formule naar zichzelf verwijst. Of met andere woorden, de cel waarin de formule is ingevoerd, ligt binnen het bereik waarnaar de formule verwijst. Dit veroorzaakt een circulaire afhankelijkheidsfout.
de volgende formule veroorzaakt een fout bij het invoeren in cel A2:
= filter (A2:B, B2: B= “Medium”)
om deze fout op te lossen, voegt u gewoon de tabnaam toe aan de referenties in de filterformule.
de verwijzing naar het bronbereik zal ‘Another Tab’zijn!A2: B(Apostrofen moeten worden toegevoegd voor en na de tabnaam verwijzing, wanneer er een spatie in de tabnaam).
de volgende formule is aangepast en lost de fout op:
= filter (‘Another Tab’!A2: B, ‘Een Ander Tabblad’!B2: B = “Medium”)