Om projektmappen: Socialministeriets udvidede skabelon for takstberegning på det specialiserede socialområde — rettet til de kommunale, regionale, private og selvejende leverandører, der beregner deres takster — del af ministeriets håndbog til takstberegning, se https://www.sm.dk/publikationer/2026/feb/haandbog-til-takstberegning-paa-de-specialiserede-socialomraader-. En takst, der slås op med tilnærmet match, ville stille kunne hente beløbet fra en forkert række — et andet beløb i stedet for en fejlmeddelelse. Belægget: fem kritiske VLOOKUP med approximate match (F04) i beregningskæden, dertil ti hårdkodede konstanter (F01). Differencen mellem rækkernes takster er ikke udledt her — derfor står der intet tal.
Vurdering
33 fund, heraf 5 alvorlige
5 fund af højeste alvorlighed — mønsterbrud af typer, der kan give forkerte resultater, uden at nogen fejlmeddelelse ses.
Opslag med tilnærmet match
Berørte ark: Takstberegning
5
Alvorlige
25
Advarsler
3
Oplysninger
Analysens dækning
Samtlige 1022 formelceller kunne tolkes og indgik i analysen. Formler uden for analysens flade oplyses altid åbent i rapporten — i dette ark findes ingen.
Fund
F04Opslag med tilnærmet matchAlvorlige
VLOOKUP/HLOOKUP uden FALSE (eller MATCH uden 0) returnerer den nærmeste værdi i stedet for et præcist match. Med usorterede data kan en helt forkert række hentes — uden fejlmeddelelse. Forkert pris, forkert kunde, tavst og svært at opdage.
VLOOKUP/HLOOKUP uden FALSE (eller MATCH uden 0) returnerer den nærmeste værdi i stedet for et præcist match. Med usorterede data kan en helt forkert række hentes — uden fejlmeddelelse. Forkert pris, forkert kunde, tavst og svært at opdage.
VLOOKUP/HLOOKUP uden FALSE (eller MATCH uden 0) returnerer den nærmeste værdi i stedet for et præcist match. Med usorterede data kan en helt forkert række hentes — uden fejlmeddelelse. Forkert pris, forkert kunde, tavst og svært at opdage.
VLOOKUP/HLOOKUP uden FALSE (eller MATCH uden 0) returnerer den nærmeste værdi i stedet for et præcist match. Med usorterede data kan en helt forkert række hentes — uden fejlmeddelelse. Forkert pris, forkert kunde, tavst og svært at opdage.
VLOOKUP/HLOOKUP uden FALSE (eller MATCH uden 0) returnerer den nærmeste værdi i stedet for et præcist match. Med usorterede data kan en helt forkert række hentes — uden fejlmeddelelse. Forkert pris, forkert kunde, tavst og svært at opdage.
Værdier som skattesatser eller tillæg ligger bagt direkte ind i formlen i stedet for i en navngiven celle. Når værdien ændres, skal nogen finde og rette hver forekomst — overses blot én, regner arket forkert uden at det ses.
Celler: Afskrivning og forrentning!E20, Afskrivning og forrentning!E21, Afskrivning og forrentning!E22
Detalje: constants 2004 in 2004+(E$14-E$13)-E$15 [same pattern in 3 cells]
F01Hårdkodede konstanter i formlerAdvarsler
Værdier som skattesatser eller tillæg ligger bagt direkte ind i formlen i stedet for i en navngiven celle. Når værdien ændres, skal nogen finde og rette hver forekomst — overses blot én, regner arket forkert uden at det ses.
Celler: Afskrivning og forrentning!H20, Afskrivning og forrentning!H21, Afskrivning og forrentning!H22, Afskrivning og forrentning!H23, Afskrivning og forrentning!H24, Afskrivning og forrentning!H25, Afskrivning og forrentning!H26, Afskrivning og forrentning!H27, Afskrivning og forrentning!H28, Afskrivning og forrentning!H29, Afskrivning og forrentning!H30, Afskrivning og forrentning!H31, Afskrivning og forrentning!H32, Afskrivning og forrentning!H33, Afskrivning og forrentning!H34, Afskrivning og forrentning!H35, Afskrivning og forrentning!H36, Afskrivning og forrentning!H37, Afskrivning og forrentning!H38, Afskrivning og forrentning!H39, Afskrivning og forrentning!H40, Afskrivning og forrentning!H41, Afskrivning og forrentning!H42, Afskrivning og forrentning!H43, Afskrivning og forrentning!H44
Detalje: constants 12 in IF($G20=0,0,IF(($E$14-E20)>G20,0,IF($E$14=E20,((12-F20)/12)*((C20-D20)/G20),IF(AND($E$14=E20+G20,F20>0),C20-J20,I20)))) [same pattern in 25 cells]
F01Hårdkodede konstanter i formlerAdvarsler
Værdier som skattesatser eller tillæg ligger bagt direkte ind i formlen i stedet for i en navngiven celle. Når værdien ændres, skal nogen finde og rette hver forekomst — overses blot én, regner arket forkert uden at det ses.
Celler: Afskrivning og forrentning!J20, Afskrivning og forrentning!J21, Afskrivning og forrentning!J22, Afskrivning og forrentning!J23, Afskrivning og forrentning!J24, Afskrivning og forrentning!J25, Afskrivning og forrentning!J26, Afskrivning og forrentning!J27, Afskrivning og forrentning!J28, Afskrivning og forrentning!J29, Afskrivning og forrentning!J30, Afskrivning og forrentning!J31, Afskrivning og forrentning!J32, Afskrivning og forrentning!J33, Afskrivning og forrentning!J34, Afskrivning og forrentning!J35, Afskrivning og forrentning!J36, Afskrivning og forrentning!J37, Afskrivning og forrentning!J38, Afskrivning og forrentning!J39, Afskrivning og forrentning!J40, Afskrivning og forrentning!J41, Afskrivning og forrentning!J42, Afskrivning og forrentning!J43, Afskrivning og forrentning!J44
Detalje: constants 12 in IF(I20=0,C20,IF((((12-F20)/12)*(I20)+(($E$14-(E20+1))*I20))>C20,C20,IF($E$14=E20,0,((12-F20)/12)*(I20)+(($E$14-(E20+1))*I20)))) [same pattern in 25 cells]
F01Hårdkodede konstanter i formlerAdvarsler
Værdier som skattesatser eller tillæg ligger bagt direkte ind i formlen i stedet for i en navngiven celle. Når værdien ændres, skal nogen finde og rette hver forekomst — overses blot én, regner arket forkert uden at det ses.
Celler: Afskrivning og forrentning!K20, Afskrivning og forrentning!K21, Afskrivning og forrentning!K22, Afskrivning og forrentning!K23, Afskrivning og forrentning!K24, Afskrivning og forrentning!K25, Afskrivning og forrentning!K26, Afskrivning og forrentning!K27, Afskrivning og forrentning!K28, Afskrivning og forrentning!K29, Afskrivning og forrentning!K30, Afskrivning og forrentning!K31, Afskrivning og forrentning!K32, Afskrivning og forrentning!K33, Afskrivning og forrentning!K34, Afskrivning og forrentning!K35, Afskrivning og forrentning!K36, Afskrivning og forrentning!K37, Afskrivning og forrentning!K38, Afskrivning og forrentning!K39, Afskrivning og forrentning!K40, Afskrivning og forrentning!K41, Afskrivning og forrentning!K42, Afskrivning og forrentning!K43, Afskrivning og forrentning!K44
Detalje: constants 2, 0.5 in IF($E$14=E20,((C20+(C20-H20))/2),(C20-J20)-(0.5*I20)) [same pattern in 25 cells]
F01Hårdkodede konstanter i formlerAdvarsler
Værdier som skattesatser eller tillæg ligger bagt direkte ind i formlen i stedet for i en navngiven celle. Når værdien ændres, skal nogen finde og rette hver forekomst — overses blot én, regner arket forkert uden at det ses.
Celler: Afskrivning og forrentning!L20, Afskrivning og forrentning!L21, Afskrivning og forrentning!L22, Afskrivning og forrentning!L23, Afskrivning og forrentning!L24, Afskrivning og forrentning!L25, Afskrivning og forrentning!L26, Afskrivning og forrentning!L27, Afskrivning og forrentning!L28, Afskrivning og forrentning!L29, Afskrivning og forrentning!L30, Afskrivning og forrentning!L31, Afskrivning og forrentning!L32, Afskrivning og forrentning!L33, Afskrivning og forrentning!L34, Afskrivning og forrentning!L35, Afskrivning og forrentning!L36, Afskrivning og forrentning!L37, Afskrivning og forrentning!L38, Afskrivning og forrentning!L39, Afskrivning og forrentning!L40, Afskrivning og forrentning!L41, Afskrivning og forrentning!L42, Afskrivning og forrentning!L43, Afskrivning og forrentning!L44
Detalje: constants 12, 100 in IF($E$14=E20,(((12-F20)/12)*($G$14/100))*K20,K20*($G$14/100)) [same pattern in 25 cells]
F01Hårdkodede konstanter i formlerAdvarsler
Værdier som skattesatser eller tillæg ligger bagt direkte ind i formlen i stedet for i en navngiven celle. Når værdien ændres, skal nogen finde og rette hver forekomst — overses blot én, regner arket forkert uden at det ses.
Celler: Forrentning af likvider!C13
Detalje: constants 1.5 in +C11*1.5
F01Hårdkodede konstanter i formlerAdvarsler
Værdier som skattesatser eller tillæg ligger bagt direkte ind i formlen i stedet for i en navngiven celle. Når værdien ændres, skal nogen finde og rette hver forekomst — overses blot én, regner arket forkert uden at det ses.
Celler: Overhead!C25
Detalje: constants 500000 in 500000*B25
F01Hårdkodede konstanter i formlerAdvarsler
Værdier som skattesatser eller tillæg ligger bagt direkte ind i formlen i stedet for i en navngiven celle. Når værdien ændres, skal nogen finde og rette hver forekomst — overses blot én, regner arket forkert uden at det ses.
Celler: Overhead!C35
Detalje: constants 800000 in 800000*B35
F01Hårdkodede konstanter i formlerAdvarsler
Værdier som skattesatser eller tillæg ligger bagt direkte ind i formlen i stedet for i en navngiven celle. Når værdien ændres, skal nogen finde og rette hver forekomst — overses blot én, regner arket forkert uden at det ses.
Celler: Overhead!C36, Overhead!C42, Overhead!C49
Detalje: constants 400000 in 400000*B36 [same pattern in 3 cells]
F01Hårdkodede konstanter i formlerAdvarsler
Værdier som skattesatser eller tillæg ligger bagt direkte ind i formlen i stedet for i en navngiven celle. Når værdien ændres, skal nogen finde og rette hver forekomst — overses blot én, regner arket forkert uden at det ses.
Celler: Overhead!C63
Detalje: constants 5, 4000 in 5*4000
F02Formel afviger fra mønstretAdvarsler
I en række eller kolonne hvor cellerne følger samme beregningsmønster, gør denne celle noget andet. Det er ofte resten af en manuel justering eller en kopiering, der er gået skævt — og netop den slags celler ligger typisk bag summeringer, der ikke stemmer.
Celler: Forside!F34
Detalje: formula deviates from the pattern of 3 neighbours: +C34/D34
F02Formel afviger fra mønstretAdvarsler
I en række eller kolonne hvor cellerne følger samme beregningsmønster, gør denne celle noget andet. Det er ofte resten af en manuel justering eller en kopiering, der er gået skævt — og netop den slags celler ligger typisk bag summeringer, der ikke stemmer.
Celler: Overhead!E33, Overhead!E40, Overhead!E47, Overhead!E54, Overhead!E61, Overhead!E68
Detalje: formula deviates from the pattern of 42 neighbours: SUM(E34:E39) [same pattern in 6 cells]
F02Formel afviger fra mønstretAdvarsler
I en række eller kolonne hvor cellerne følger samme beregningsmønster, gør denne celle noget andet. Det er ofte resten af en manuel justering eller en kopiering, der er gået skævt — og netop den slags celler ligger typisk bag summeringer, der ikke stemmer.
Celler: Takstberegning!F39, Takstberegning!G39, Takstberegning!H39, Takstberegning!I39, Takstberegning!J39
Detalje: formula deviates from the pattern of 43 neighbours: SUM(F23:F37) [same pattern in 5 cells]
F02Formel afviger fra mønstretAdvarsler
I en række eller kolonne hvor cellerne følger samme beregningsmønster, gør denne celle noget andet. Det er ofte resten af en manuel justering eller en kopiering, der er gået skævt — og netop den slags celler ligger typisk bag summeringer, der ikke stemmer.
Celler: Takstberegning!F44, Takstberegning!F57, Takstberegning!G44, Takstberegning!G57, Takstberegning!H44, Takstberegning!H57, Takstberegning!I44, Takstberegning!I57, Takstberegning!J44, Takstberegning!J57
Detalje: formula deviates from the pattern of 43 neighbours: SUM(F41:F43) [same pattern in 10 cells]
F02Formel afviger fra mønstretAdvarsler
I en række eller kolonne hvor cellerne følger samme beregningsmønster, gør denne celle noget andet. Det er ofte resten af en manuel justering eller en kopiering, der er gået skævt — og netop den slags celler ligger typisk bag summeringer, der ikke stemmer.
Celler: Takstberegning!F52, Takstberegning!G52, Takstberegning!H52, Takstberegning!I52, Takstberegning!J52
Detalje: formula deviates from the pattern of 43 neighbours: SUM(F47:F51) [same pattern in 5 cells]
F02Formel afviger fra mønstretAdvarsler
I en række eller kolonne hvor cellerne følger samme beregningsmønster, gør denne celle noget andet. Det er ofte resten af en manuel justering eller en kopiering, der er gået skævt — og netop den slags celler ligger typisk bag summeringer, der ikke stemmer.
Celler: Takstberegning!F63, Takstberegning!G63, Takstberegning!H63, Takstberegning!I63, Takstberegning!J63
Detalje: formula deviates from the pattern of 43 neighbours: SUM(F59:F62) [same pattern in 5 cells]
F02Formel afviger fra mønstretAdvarsler
I en række eller kolonne hvor cellerne følger samme beregningsmønster, gør denne celle noget andet. Det er ofte resten af en manuel justering eller en kopiering, der er gået skævt — og netop den slags celler ligger typisk bag summeringer, der ikke stemmer.
Celler: Takstberegning!F83, Takstberegning!G83, Takstberegning!H83, Takstberegning!I83, Takstberegning!J83
Detalje: formula deviates from the pattern of 43 neighbours: SUM(F66:F81) [same pattern in 5 cells]
F02Formel afviger fra mønstretAdvarsler
I en række eller kolonne hvor cellerne følger samme beregningsmønster, gør denne celle noget andet. Det er ofte resten af en manuel justering eller en kopiering, der er gået skævt — og netop den slags celler ligger typisk bag summeringer, der ikke stemmer.
Celler: Takstberegning!F84, Takstberegning!G84, Takstberegning!H84, Takstberegning!I84, Takstberegning!J84
Detalje: formula deviates from the pattern of 43 neighbours: F39+F44+F52+F57+F63+F83 [same pattern in 5 cells]
F02Formel afviger fra mønstretAdvarsler
I en række eller kolonne hvor cellerne følger samme beregningsmønster, gør denne celle noget andet. Det er ofte resten af en manuel justering eller en kopiering, der er gået skævt — og netop den slags celler ligger typisk bag summeringer, der ikke stemmer.
Celler: Takstberegning!F89, Takstberegning!G89, Takstberegning!H89, Takstberegning!I89, Takstberegning!J89
Detalje: formula deviates from the pattern of 43 neighbours: F39+F44+F52+F57+F63+F83+F86 [same pattern in 5 cells]
F02Formel afviger fra mønstretAdvarsler
I en række eller kolonne hvor cellerne følger samme beregningsmønster, gør denne celle noget andet. Det er ofte resten af en manuel justering eller en kopiering, der er gået skævt — og netop den slags celler ligger typisk bag summeringer, der ikke stemmer.
Celler: Takstberegning!F91, Takstberegning!F92, Takstberegning!F93, Takstberegning!G91, Takstberegning!G92, Takstberegning!G93, Takstberegning!H91, Takstberegning!H92, Takstberegning!H93, Takstberegning!I91, Takstberegning!I92, Takstberegning!I93, Takstberegning!J91, Takstberegning!J92, Takstberegning!J93
Detalje: formula deviates from the pattern of 43 neighbours: +F$16*$C91 [same pattern in 15 cells]
F02Formel afviger fra mønstretAdvarsler
I en række eller kolonne hvor cellerne følger samme beregningsmønster, gør denne celle noget andet. Det er ofte resten af en manuel justering eller en kopiering, der er gået skævt — og netop den slags celler ligger typisk bag summeringer, der ikke stemmer.
Celler: Takstberegning!K103, Takstberegning!K105, Takstberegning!K107
Detalje: formula deviates from the pattern of 59 neighbours: SUM(G103:J103) [same pattern in 3 cells]
F09Manuel værdi hvor en formel forventesAdvarsler
Midt i et formelmønster ligger en hårdt indtastet værdi — nogen har overskrevet formlen, ofte for at 'rette' et tal inden en deadline. Cellen opdateres aldrig mere, når inddata ændres.
Celler: Fordelingsnøgler!B13, Fordelingsnøgler!B33, Fordelingsnøgler!C18, Fordelingsnøgler!C23, Fordelingsnøgler!C28, Fordelingsnøgler!D18, Fordelingsnøgler!D23, Fordelingsnøgler!D28, Fordelingsnøgler!E18, Fordelingsnøgler!E23, Fordelingsnøgler!E28, Fordelingsnøgler!F18, Fordelingsnøgler!F23, Fordelingsnøgler!F28
Detalje: constant value where the surrounding 8-cell formula pattern predicts a formula [same pattern in 14 cells]
F09Manuel værdi hvor en formel forventesAdvarsler
Midt i et formelmønster ligger en hårdt indtastet værdi — nogen har overskrevet formlen, ofte for at 'rette' et tal inden en deadline. Cellen opdateres aldrig mere, når inddata ændres.
Celler: Overhead!D25
Detalje: constant value where the surrounding 7-cell formula pattern predicts a formula
F19Følsom lighedssammenligning af decimaltalAdvarsler
En betingelse sammenligner beregnede decimaltal med præcis lighed. Flydende tal gemmes binært, så udtryk som 0,1+0,2 rammer ikke præcis 0,3 — betingelsen kan slå fejl på sidste decimal tilsyneladende tilfældigt, og fejlen ses kun ved visse kørsler.
Celler: Afskrivning og forrentning!H20, Afskrivning og forrentning!H21, Afskrivning og forrentning!H22, Afskrivning og forrentning!H23, Afskrivning og forrentning!H24, Afskrivning og forrentning!H25, Afskrivning og forrentning!H26, Afskrivning og forrentning!H27, Afskrivning og forrentning!H28, Afskrivning og forrentning!H29, Afskrivning og forrentning!H30, Afskrivning og forrentning!H31, Afskrivning og forrentning!H32, Afskrivning og forrentning!H33, Afskrivning og forrentning!H34, Afskrivning og forrentning!H35, Afskrivning og forrentning!H36, Afskrivning og forrentning!H37, Afskrivning og forrentning!H38, Afskrivning og forrentning!H39, Afskrivning og forrentning!H40, Afskrivning og forrentning!H41, Afskrivning og forrentning!H42, Afskrivning og forrentning!H43, Afskrivning og forrentning!H44
Detalje: equality on computed floating-point value(s): ($E$14=(E20+G20)) [same pattern in 25 cells]
F20Kopierede ark der er divergeretAdvarsler
Samme formelmønster findes på flere ark, men arkene har forskellig udstrækning. Det er sporet af et kopieret ark, der siden er vokset eller skrumpet — formler, der dækkede alle data på ét ark, dækker dem ikke længere på et andet, uden varsel.
Celler: Fordelingsnøgler!G13, Takstberegning!K10
Detalje: 2 shared formula pattern(s) of >=5 cells on sheets with diverging structure: Fordelingsnøgler (used extent G55) vs Takstberegning (used extent L137)
F05Udokumenterede betingelsesgrænserOplysninger
Tærskelværdier i IF-betingelser ligger direkte i formlen i stedet for i en dokumenteret celle. Grænserne ses ikke ved gennemgang, og ingen ved, om 37,5 er en bevidst beslutning eller et glemt tal.
Celler: Forside!F24
Detalje: condition thresholds 1 hardcoded in IF(ABS(E24)<1,"OK","Alt er ikke fordelt - det' en OM'er!")
F05Udokumenterede betingelsesgrænserOplysninger
Tærskelværdier i IF-betingelser ligger direkte i formlen i stedet for i en dokumenteret celle. Grænserne ses ikke ved gennemgang, og ingen ved, om 37,5 er en bevidst beslutning eller et glemt tal.
Celler: Forside!F36
Detalje: condition thresholds 1 hardcoded in IF(ABS(C36)<1,"OK","NB: Indtægter svarer ikke til omkostninger...!")
F22Manglende beskyttelse omkring følsomme formlerOplysninger
Arkene med formler mangler skrivebeskyttelse, samtidig med at projektmappen indeholder hårdkodede eller følsomme konstanter. Arkets mest følsomme værdier kan ændres af enhver med filen — uden spor, historik eller varsel.
Detalje: no sheet protection on formula sheet(s) Afskrivning og forrentning, Fordelingsnøgler, Forrentning af likvider, Forside, Overhead, Puljer, Takstberegning — 110 cells with hardcoded constants (F01) can be edited by anyone with the file
Om projektmappen
Ark
Forside, Takstberegning, Fordelingsnøgler, Budget (økonomisystem), Regnskab (økonomisystem), Overhead, Afskrivning og forrentning, Forrentning af likvider, Tidligere result, Puljer
Formelceller
1022
Inputceller
425
Skjulte ark
0
Metode
Analysen læser arkets formler og struktur — aldrig celleværdier eller data.
Værktøjsversion
0.1.3
Analysedato
2026-08-01 12:54 UTC
Arkversion
februar 2026
Arket hentet
2026-07-29
Hvad analysen ikke ser
Denne analyse ser mønsterbrud: brudte referencer, overskrevne formler, udokumenterede konstanter, afvigere i beregningsmønstre. Hvad den ikke kan se, er fejl i hensigt — når alle celler konsekvent regner forkert, eller når en etiket lover noget andet, end formlen gør. Det kræver gennemgang begreb for begreb med nogen, der ved, hvad regnearket skal gøre. En rapport uden fund betyder derfor "ingen mønsterbrud fundet" — ikke "færdigt gennemgået".
Næste skridt
Denne rapport er det gratis sundhedstjek. Den betalte verifikation bygger videre på samme analyse og leverer:
Risikorapport — samtlige fund i arkets logik med cellereferencer, alvorlighed og forklaring. Denne rapport er det første skridt og er allerede inkluderet.
Kravspecifikation — arkets beregningslogik dokumenteret i læsbar form — ofte første gang processen er beskrevet uden for arket.
Kørbar erstatning — arkets logik som testet applikation med formular til inddata.
Ækvivalensbevis — rapport, der viser, at erstatningen giver identisk resultat med arket over tusindvis af testtilfælde inklusive grænsetilfælde, med grendækningsredegørelse.
Første opgave begynder med en pilot på ét ark, fast pris. Piloten er risikovendt — og I er dommeren: mener I ved gennemgangen, at fundene ikke var prisen værd, annulleres fakturaen. Kode og bevis leveres derefter i opgaven, mod milepæle I selv godkender undervejs.