En kassebog til en lille forening kan klares med én Excel-tabel og en håndfuld formler. Eksempelfilen her har seks ark: et ark om filen, opsætning med primosaldo, selve kassebogen med løbende saldo, saldo pr. konto, en månedsoversigt og et kontrolark, der fortæller dig, om tallene hænger sammen og stemmer med kontoudtoget.

Foreningen, Grundejerforeningen Kløverstien, og alle tal er opdigtede. Alle formler og resultater nedenfor er beregnet i Excel på dansk, og du kan hente filen nederst.

Kassebogen: én række pr. postering

Arket Kassebog er en Excel-tabel med navnet Posteringer. Hver bevægelse på kontoen er én række med dato, bilagsnummer, tekst, konto og beløbet i enten Indtægt eller Udgift:

Arket Kassebog, de første fire af 21 posteringer. Saldo er en beregnet kolonne.
Række ABCDEFG
1 Dato Bilag Tekst Konto Indtægt Udgift Saldo
2 02-01-2026B1Forsikring 2026Forsikring6.240,0012.210,00
3 15-01-2026B2Kontingent 1. halvår, 12 parcellerKontingent9.000,0021.210,00
4 31-01-2026B3Bankgebyr januarBankgebyrer35,0021.175,00
5 12-02-2026B4Kontingent, restance parcel 7Kontingent750,0021.925,00
Arket Kassebog, de første fire af 21 posteringer. Saldo er en beregnet kolonne.

Tre valg gør resten af filen enkel:

  • To beløbskolonner i stedet for én med fortegn. Så kan du ikke komme til at glemme et minus, og summerne af indtægter og udgifter står direkte.
  • Konto er et fast navn fra listen på arket Pr. konto. Det er den kolonne, alle summer pr. konto bygger på, så stavemåden skal være præcis den samme hver gang.
  • Det er en tabel. Skriver du en ny postering i første tomme række under tabellen, bliver den en del af tabellen, og alle formler, der bruger Posteringer[…], tager den med. Læs mere om tabeller og strukturerede referencer.

En tilbagebetaling af kontingent (bilag B17, 750,00) er skrevet som en udgift på kontoen Kontingent. Så står den i bilagsrækkefølge og trækker alligevel fra på den rigtige konto.

Løbende saldo

Saldo-kolonnen lægger primosaldoen fra arket Opsætning til alle indtægter fra toppen af tabellen og ned til den aktuelle række og trækker udgifterne fra på samme måde:

G2 =Opsætning!$B$4+SUM(Posteringer[[#Overskrifter];[Indtægt]]:[@Indtægt])-SUM(Posteringer[[#Overskrifter];[Udgift]]:[@Udgift])

Posteringer[[#Overskrifter];[Indtægt]]:[@Indtægt] er området fra overskriften Indtægt ned til denne række. SUM springer overskriftens tekst over. Med primosaldo 18.450,00 gav formlen 12.210,00 efter forsikringen i første række og 17.414,35 i sidste række.

Formlen er den samme i alle rækker, også den første, så den passer til en beregnet kolonne i tabellen. Den henviser ikke til rækken ovenover, hvor første række ellers ville ramme overskriften. Det er samtidig opskriften på en løbende saldo uden cirkulær reference: saldoen summerer posteringerne fra toppen i stedet for at lægge noget til sig selv.

Saldoen følger rækkefølgen i tabellen. Hold derfor posteringerne sorteret efter dato og bilag, så saldoen i hver række kan sammenlignes med kontoudtoget.

Saldo pr. konto

Arket Pr. konto har kontonavnene i kolonne A og summerer med SUM.HVISER (engelsk: SUMIFS):

C2 =SUM.HVISER(Posteringer[Indtægt];Posteringer[Konto];$A2)
D2 =SUM.HVISER(Posteringer[Udgift];Posteringer[Konto];$A2)

Netto i kolonne E er bare =C2-D2.

Arket Pr. konto for hele 2026.
Række ABCDE
1 Konto Type Indtægter Udgifter Netto
2 KontingentIndtægt18.750,00750,0018.000,00
3 ArrangementerIndtægt og udgift2.400,003.680,35-1.280,35
4 RenterIndtægt12,350,0012,35
5 VedligeholdelseUdgift0,0010.005,90-10.005,90
6 ForsikringUdgift0,006.240,00-6.240,00
7 AdministrationUdgift0,001.101,75-1.101,75
8 BankgebyrerUdgift0,00420,00-420,00
9 I alt21.162,3522.198,00-1.035,65
Arket Pr. konto for hele 2026.

Året gav et underskud på 1.035,65, og 18.450,00 − 1.035,65 = 17.414,35 er præcis den sidste løbende saldo. Kontoen Arrangementer viser, hvorfor det er praktisk at have både indtægter og udgifter på samme konto: sankthans gav 2.400,00 i billetsalg, men arrangementerne kostede tilsammen 3.680,35.

Skal du have en ny konto, så skriv den i en ny række over “I alt” og kopiér formlerne fra rækken ovenover. Husk at kontrollere, at summen i “I alt” også tager den nye række med.

Månedsoversigt

Arket Pr. måned har den første dag i hver måned i kolonne A, formateret med mmmm, så der står “januar”, “februar” og så videre. Indtægter og udgifter pr. måned summeres med to datokriterier:

B2 =SUM.HVISER(Posteringer[Indtægt];Posteringer[Dato];">="&$A2;Posteringer[Dato];"<"&SLUT.PÅ.MÅNED($A2;0)+1)

Saldoen ved månedens udgang er primosaldoen plus netto for alle måneder til og med denne:

E2 =Opsætning!$B$4+SUM($D$2:D2)
$D$2 er låst, D2 er ikke. Kopieret ned bliver området $D$2:D3, $D$2:D4 og så videre.
Arket Pr. måned.
Række ABCDE
1 Måned Indtægter Udgifter Netto Saldo ultimo
2 januar9.000,006.275,002.725,0021.175,00
3 februar750,0035,00715,0021.890,00
4 marts0,003.835,25-3.835,2518.054,75
5 april0,00489,00-489,0017.565,75
6 maj0,001.146,25-1.146,2516.419,50
7 juni2.400,001.955,00445,0016.864,50
8 juli9.000,000,009.000,0025.864,50
9 august0,004.500,00-4.500,0021.364,50
10 september0,00105,00-105,0021.259,50
11 oktober0,00750,00-750,0020.509,50
12 november0,002.318,40-2.318,4018.191,10
13 december12,35789,10-776,7517.414,35
14 I alt21.162,3522.198,00-1.035,65
Arket Pr. måned.

Saldo ultimo for hver måned kan du sammenligne direkte med saldoen på bankens kontoudtog for den sidste dag i måneden. Hvorfor kriteriet er "<"&SLUT.PÅ.MÅNED(…)+1 og ikke "<=", kan du læse i guiden om SUM.HVISER pr. måned.

Kontrolarket: stemmer det hele?

Arket Kontrol samler de tal, du skal bruge ved afstemning, og en række tjek, der viser “OK” eller et tal. Beregnet ultimosaldo er =B2+B3-B4, altså primosaldo plus indtægter minus udgifter. Saldoen fra kontoudtoget skriver du selv i B7.

Kontrol Formel Resultat i eksemplet
Konti summer til det samme som kassebogen =HVIS(AFRUND('Pr. konto'!E9-(B3-B4);2)=0;"OK";"Afviger") OK
Måneder summer til det samme som kassebogen =HVIS(AFRUND('Pr. måned'!D14-(B3-B4);2)=0;"OK";"Afviger") OK
Løbende saldo = beregnet ultimosaldo =HVIS(AFRUND(B6-B5;2)=0;"OK";"Afviger") OK
Kassebog = kontoudtog =HVIS(AFRUND(B7-B5;2)=0;"OK";"Afviger med "&TEKST(B7-B5;"#.##0,00")) OK (B7 er i eksemplet sat til det rigtige beløb)
Posteringer med ukendt konto =SUMPRODUKT(--(TÆL.HVIS('Pr. konto'!$A$2:$A$8;Posteringer[Konto])=0)) 0
Posteringer uden dato =ANTAL.BLANKE(Posteringer[Dato]) 0
Beløb gemt som tekst =TÆLV(Posteringer[[Indtægt]:[Udgift]])-TÆL(Posteringer[[Indtægt]:[Udgift]]) 0
Rækker med både indtægt og udgift =TÆL.HVISER(Posteringer[Indtægt];"<>";Posteringer[Udgift];"<>") 0

Den sidste løbende saldo i B6 hentes med =INDEKS(Posteringer[Saldo];RÆKKER(Posteringer[Saldo])), som tager den nederste række i tabellen, også når der kommer flere til.

AFRUND(…;2) i sammenligningerne er en sikkerhed mod de meget små forskelle, der kan opstå, når Excel regner med kommatal. I eksemplet gav sammenligningerne også SAND uden AFRUND, men det er ikke noget, du kan regne med i alle tilfælde. Se kommatal og præcision.

Sådan fanger kontrollerne fejl

For at se, om kontrollerne virker, lavede vi en kopi af kassebogen med tre typiske fejl og en forkert saldo fra kontoudtoget:

  1. Kontoen for “Vejbelysning, reparation” (bilag B18) stavet “Vedligholdelse” uden e.
  2. Beløbet 489,00 for webhotellet skrevet som tekst.
  3. Datoen slettet for “Sankthans, bål og musik” (1.850,00).
  4. Saldoen fra kontoudtoget skrevet 100,00 for højt.

Sådan så kontrolarket ud bagefter:

Kontrol Resultat med fejl
Konti summer til det samme som kassebogen Afviger
Måneder summer til det samme som kassebogen Afviger
Løbende saldo = beregnet ultimosaldo OK
Kassebog = kontoudtog Afviger med -389,00
Posteringer med ukendt konto 1
Posteringer uden dato 1
Beløb gemt som tekst 1

Hver fejl blev fanget, men ikke af den samme kontrol:

  • Stavefejlen i kontoen fik Vedligeholdelse til at vise 7.687,50 i stedet for 10.005,90. Kontoarket manglede 2.318,40, og der kom ingen fejlmeddelelse. “Posteringer med ukendt konto” gav 1. Hvilken række det er, kan du finde med FILTRER, som gav bilag B18:
=FILTRER(Posteringer[[Bilag]:[Konto]];TÆL.HVIS('Pr. konto'!$A$2:$A$8;Posteringer[Konto])=0;"ingen")
  • Beløbet som tekst blev sprunget over overalt: udgifterne i alt faldt fra 22.198,00 til 21.709,00. Fordi det mangler de samme steder, viste “Løbende saldo = beregnet ultimosaldo” stadig OK. Det er “Beløb gemt som tekst” og sammenligningen med kontoudtoget, der afslører det. Se tal gemt som tekst.
  • Den manglende dato påvirkede kun månedsoversigten. Juni viste udgifter på 105,00 i stedet for 1.955,00. Den løbende saldo blev ved med at regne rigtigt, fordi den ikke bruger datoen.
  • Kontoudtoget afveg med -389,00. Det er de 100,00, vi skrev for meget, minus de 489,00, som kassebogen ikke talte med. Når flere fejl rammer samme tal, kan de dække for hinanden, så ret dem, som de andre kontroller peger på, og se så på afvigelsen igen.

Kommer dine posteringer fra en fil fra banken, så læs CSV-filer fra banken i Excel, før du kopierer dem ind. Beløb og datoer, der bliver til tekst ved importen, er præcis den slags fejl, kontrolarket fanger.

Om eksempelfilen

Filen indeholder ingen makroer. Den har arkene Om filen, Opsætning, Kassebog, Pr. konto, Pr. måned og Kontrol. Vi har åbnet den gemte fil igen i Excel og genberegnet den: alle kontroller viste OK og 0.

Til et nyt år kan du gemme filen under et nyt navn, skrive sidste års ultimosaldo som primosaldo i Opsætning!B4, slette rækkerne i tabellen på nær én og overskrive den. Månederne i Pr. måned er datoer i 2026, så dem skal du også rette til det nye år.