Excel: verdens farligste programmeringsspråk
Excel er et programmeringsspråk. Det er antakelig det mest brukte programmeringsspråket i verden, og det er garantert det farligste.

De fleste som bruker Excel vil protestere. «Jeg programmerer ikke, jeg lager bare et regneark.» Nettopp. Det er det som er problemet.
Et språk ingen vet at de skriver
Når du skriver =B2*C2 og drar formelen nedover 4000 rader, har du skrevet et program. Et program med 4000 funksjoner, én per celle, som hver kan være forskjellig fra naboen uten at noen ser det. Det finnes ingen funksjonsdefinisjoner, bare kopier. Det finnes ingen variabelnavn, bare koordinater. =SUMMER(D2:D847) forteller deg ingenting om hva D er, og ingenting om hvorfor summen stopper på rad 847 og ikke 848.
Hvis vi så dette i en kodebase, ville vi kalt det spaghettikode. Globale variabler overalt, ingen innkapsling, magiske tall, goto i alle retninger. I Excel kaller vi det «budsjettet for 2027».
Den enslige 2-tallet
Her er det virkelige marerittet. Kolonne F inneholder formler. Rad 2 til 612 regner ut det samme. Men i F347 står det 2. Bare tallet 2. Noen overskrev formelen for tre år siden, fordi tallet «ble feil» og de trengte å få rapporten ut før lunsj.
Regnearket ser helt normalt ut. Tallet 2 ser akkurat ut som et resultat. Det er ingen advarsel, ingen kompilatorfeil, ingen test som feiler. Den eneste måten å finne det på er å klikke deg gjennom hver eneste celle og lese hva som faktisk står der.
Det finnes ingen git blame. Det finnes ingen diff. En .xlsx-fil er en zip-fil med XML inni, og å diffe den gir deg ingenting nyttig. Revisjonshistorikken er budsjett_v3_FINAL_endelig_OMS_rettet(2).xlsx.
Dette er ikke teori
Excel-feil har kostet ekte penger og ekte konsekvenser:
Reinhart og Rogoff (2010). En innflytelsesrik økonomisk artikkel hevdet at høy statsgjeld hemmer vekst, og ble brukt som argument for innstramningspolitikk i flere land. I 2013 fant en doktorgradsstudent ut at regnearket hadde et celleområde som ikke tok med fem land. Feil rad i en GJENNOMSNITT.
London Whale, JPMorgan (2012). En risikomodell ble bygd i Excel med manuell kopiering mellom regneark. En formel delte på summen i stedet for gjennomsnittet, noe som undervurderte risikoen kraftig. Tapet ble rundt 6 milliarder dollar.
Covid-19 i England (2020). Public Health England brukte det gamle .xls-formatet, som har et tak på 65 536 rader. Nesten 16 000 positive tester forsvant rett og slett ut av rapporteringen, og smittesporingen av dem ble forsinket.
Gener som ble til datoer. Excel konverterer gjerne SEPT2 og MARCH1 til 2. september og 1. mars. Dette ødela så mange forskningsdatasett at genetikerne til slutt ga opp og ga genene nye navn i 2020. Det er ikke Excel som ble fikset. Det er biologien som ble tilpasset Excel.
Norske bonusfeller
Vi har våre egne godsaker her til lands:
- Postnummer. 0150 Oslo blir til 150. Ledende nuller er for svake sjeler.
- Fødselsnummer. Samme problem, pluss at Excel bare holder 15 signifikante sifre. Lange ID-er blir stille avrundet.
- Lokaliserte funksjonsnavn.
HVIS,FINN.RAD,SUMMERHVIS. Formlene dine betyr noe annet, eller ingenting, avhengig av hvilket språk Office er installert på. - Komma som desimalskilletegn. Åpne en CSV fra en amerikansk kilde og se hva som skjer med tallene dine. Eller ikke. Excel sier ikke fra.
- 1900 var et skuddår. Det var det ikke. Men Excel mener det, for å være kompatibel med en feil i Lotus 1-2-3 fra 1983.
Men er det ikke bare brukerfeil?
Delvis, og det er verdt å være ærlig om. Excel er faktisk et ganske elegant funksjonelt språk, reaktivt og uten sideeffekter. Microsoft har lagt til LET og LAMBDA, og det finnes navngitte områder, tabeller og Python i Excel. Du kan skrive ryddige regneark.
Problemet er at ingenting i verktøyet dytter deg dit. Alle ingeniørpraksisene vi har brukt 50 år på å utvikle (versjonskontroll, kodegjennomgang, tester, separasjon mellom data og logikk) er fraværende som standard. Og brukerne er ofte ikke utviklere, så de vet ikke at de mangler dem. De vet ikke engang at de skriver kode.
Et språk der det farlige er standard og det trygge krever ekspertise er et farlig språk. Uansett hvor elegant det er under panseret.
Moralen
Neste gang noen sender deg et regneark som «bare regner ut» noe viktig: behandle det som ukjent legacy-kode uten tester, skrevet av noen som har sluttet. For det er akkurat det det er.
Og se etter tallet 2.