En privatbudget blir både enklare och roligare när du har ett smidigt formulär för inmatning, en tabell som samlar alla transaktioner och en översikt som automatiskt summerar inkomster, utgifter och saldo per månad. I den här guiden bygger vi en robust mall i Excel med följande blad:
Formulär – enkel inmatning med rullistor (Typ & Kategori) och knappar som kör makron
Budgetöversikt – din databas i form av en Excel-tabell (tblBudget)
Listor – källor till rullistor (typer och kategorier)
Översikt – summeringar och nyckeltal för vald månad
(Valfritt) Månadsrapport_ÅÅÅÅ-MM – en månadsrapport som skapas automatiskt av ett makro
Instruktioner – kort översikt över hur allt hänger ihop
Vi använder dessutom namngivna celler i Formulär-bladet för att makrona ska bli mycket enklare att skriva och förstå:
nmDatum,nmManad,nmTyp,nmKategori,nmBelopp,nmKommentar
Obs! Du kan följa guiden i Excel för Microsoft 365 eller Excel 2016+. Skärmbeteckningar kan variera något mellan versioner, men principerna är samma.
1) Skapa bladen och sätt grundstrukturen
1.1 Skapa filen och bladen
Öppna en ny arbetsbok och spara som .xlsm (Makroaktiverad Excel-arbetsbok), t.ex.
PrivatBudget_Pro.xlsm.Byt namn på standardblad till:
Formulär
Budgetöversikt
Listor
Översikt
Instruktioner
(Bladet Månadsrapport_ÅÅÅÅ-MM skapas av makrot senare.)
1.2 Fyll i “Listor” – källor för rullistor
På bladet Listor, skapa följande rubriker i rad 1:
A1:
TypB1:
Kategorier (Inkomster)C1:
Kategorier (Utgifter)
Fyll sedan in förslag (du kan alltid ändra/utöka senare):
A-kolumn (Typ):
A2:
InkomstA3:
Utgift
B-kolumn (Inkomster):
Exempel:
Lön,Extra,Bidrag,Ränta/Avkastning,Övrigt in
C-kolumn (Utgifter):
Exempel:
Hyra,Mat,Transport,El/Värme,Telefon/Internet,Försäkringar,Hälsa/Träning,Kläder,Nöjen,Resor,Barn,Hushåll,Abonnemang,Skatt,Sparande
Tips: Lämna gott om tomma rader under varje kategori-lista så att du kan lägga till fler kategorier framöver.
2) Bygg “Budgetöversikt” – din databas (tabell)
Gå till bladet Budgetöversikt. På rad 1, skriv rubrikerna:
A1:
DatumB1:
MånadC1:
TypD1:
KategoriE1:
BeloppF1:
Kommentar
Markera området A1:F1 och tryck Ctrl+T för att skapa en tabell.
Bocka i “Tabellen har rubriker”.
Ge tabellen namnet tblBudget (Tabellformatering > Egenskaper > Tabellnamn).
2.1 Automatisk “Månad” från Datum (rekommenderas)
Så att din Månad alltid fylls korrekt och konsekvent, låt kolumn B vara en formel som bygger texten ÅÅÅÅ-MM från datumet i kolumn A.
Skriv i B2 (i tabellen):
=TEXT([@Datum];"åååå-mm")
Tryck Enter. Excel fyller formeln i hela kolumnen.
Obs: På engelska Excel är formeln
=TEXT([@Date],"yyyy-mm"). Använd semikolon resp. kommatecken utifrån dina regionala inställningar.
Nu behöver du inte skriva in månaden manuellt i tabellen när du sparar nya rader via formuläret. Perfekt för pivottabeller, rapporter och SUMMA.OMF.
3) Bygg “Formulär” – rullistor och inmatning
På bladet Formulär, skapa en enkel struktur:
A3: Datum B3: [inmatningscell]
A4: Månad (ÅÅÅÅ-MM) B4: [ev. inmatningscell/beräknad]
A5: Typ B5: [rullista Inkomst/Utgift]
A6: Kategori B6: [rullista beroende av Typ]
A7: Belopp (+/-) B7: [inmatning, positivt för inkomst, negativt för utgift]
A8: Kommentar B8: [valfritt]
Lägg gärna till textknappar (Infoga > Figurer) till höger:
SPARA RAD
NY / Rensa
Månadsrapport
Exportera månad (CSV)
Vi kopplar dessa till makron längre ner.
3.1 Namnge inmatningsceller
Markera B3 > Formler > Definiera namn > Name: nmDatum (Refererar till: =Formulär!$B$3).
Upprepa för samtliga:
nmDatum→ B3nmManad→ B4nmTyp→ B5nmKategori→ B6nmBelopp→ B7nmKommentar→ B8
Tips: Om du vill att B4 (Månad) ska fyllas automatiskt utifrån datumet i B3 kan du skriva:
=TEXT(B3;"åååå-mm")
Alternativt låter du makrot räkna ut månadstexten från datumet när du sparar raden.
3.2 Rullista för “Typ”
Markera B5 > Data > Dataverifiering > Tillåt: Lista
Källa: =Listor!$A$2:$A$3
Nu kan du välja Inkomst eller Utgift.
3.3 Beroende rullista för “Kategori”
Vill du att Kategori ska förändras beroende på Typ?
Enkel lösning (två separata källor + formel):
Skapa två namngivna områden (dynamiska) i Formler > Namnhanteraren:
rngInkomstKategorier=FELVÄRDE(#REFERENS!) // ersätt strax nedan med en dynamisk formel
Byt ut mot (Excel 365, svensk):
=TA BORTTOM(FILTER(Listor!$B$2:$B$200;Listor!$B$2:$B$200<>""))
(På engelska:
=DROPBLANKS(FILTER(Listor!$B$2:$B$200,Listor!$B$2:$B$200<>""))– använd din Excelversion/region. Alternativt:=FILTER(Listor!$B$2:$B$200;Listor!$B$2:$B$200<>"")om du saknar DROPBLANKS.)rngUtgiftKategorier=TA BORTTOM(FILTER(Listor!$C$2:$C$200;Listor!$C$2:$C$200<>""))
I B6 lägger du dataverifiering med formel som väljer rätt namn:
Tillåt: Lista
Källa (Excel 365, svensk):
=OM($B$5="Inkomst";rngInkomstKategorier;rngUtgiftKategorier)
Äldre Excel utan FILTER: använd FÖRSKJUTNING/CELLER. ANTAL (OFFSET/COUNTA) för att skapa dynamiska intervall, eller låt listorna vara fasta långa intervall med tomma rader sist.
4) “Översikt” – välj månad och visa nyckeltal
På bladet Översikt, skapa:
A3: Månad (ÅÅÅÅ-MM): B3: [skriv t.ex. 2025-09]
A5: Totala inkomster: B5: [formel]
A6: Totala utgifter: B6: [formel]
A7: Saldo: B7: =B5+B6
4.1 Summeringar med SUMMA.OMF
Om din kolumn Månad i tabellen fylls med text åååå-mm (rekommenderat) kan du skriva:
B5 (Inkomster):
=SUMMA.OMF(tblBudget[Belopp]; tblBudget[Typ]; "Inkomst"; tblBudget[Månad]; $B$3)
B6 (Utgifter):
=SUMMA.OMF(tblBudget[Belopp]; tblBudget[Typ]; "Utgift"; tblBudget[Månad]; $B$3)
4.2 “Största utgiftskategori” (valfritt)
Vill du visa vilken kategori som drog mest under månaden? Två enkla vägar:
Pivottabell (rekommenderas för nybörjare): Infoga > Pivottabell från tblBudget. Sätt Månad i filter, Kategori i rader och Belopp i värden (summering). Filtrera på vald månad och sortera efter största belopp (kom ihåg att utgifter är negativa – visa absolutbelopp om du vill jämföra storlek).
Formelväg (Excel 365) med
FILTER,UNIKochSUMMA.OMF(mer avancerat). Exempelidé:=LET(
kat;UNIK(FILTER(tblBudget[Kategori];(tblBudget[Typ]="Utgift")*(tblBudget[Månad]=$B$3)));
bel;MAPPA(kat;LAMBDA(k;SUMMA.OMF(tblBudget[Belopp];tblBudget[Typ];"Utgift";tblBudget[Månad];$B$3;tblBudget[Kategori];k)));
INDEX(kat;XMATCH(MAX(ABS(bel));ABS(bel)))
)
(Justera för svenska/engelska funktionsnamn och semikolon/kommatecken.)
5) Konditionell formatering (valfritt men trevligt)
Markera tblBudget[Belopp] i Budgetöversikt och lägg två regler:
Grönt om värdet > 0 (inkomster)
Rött om värdet < 0 (utgifter)
Det gör transaktionerna visuellt tydliga.
6) Lägg till makron (VBA) – koppla knapparna
Aktivera fliken Utvecklare (Arkiv > Alternativ > Anpassa menyfliksområdet). Klicka på Visual Basic och infoga en Modul (Infoga > Modul). Kopiera in koden nedan. All kod utgår från att dina namngivna celler och tabellen heter exakt som i guiden.
Viktigt om citattecken i .Formula: I VBA ska inre citattecken dubblas.
Ex:ws.Range("I3").Formula = "=SUMIFS(E:E,C:C,""Inkomst"",B:B,$B$1)"
Om du skriver med vanliga citattecken får du syntaxfel. Det här är ett av de vanligaste felen när man sätter formler via VBA-kod.
6.1 Hjälpfunktion: formatera månad från datum
Option ExplicitPrivate Function GetMonthText(ByVal d As Variant) As String
' Returnerar "yyyy-mm" (åååå-mm)
If IsDate(d) Then
GetMonthText = Format(CDate(d), "yyyy-mm")
Else
GetMonthText = ""
End If
End Function
6.2 SparaRad – lägg in en transaktion i tabellen
Public Sub SparaRad()
Dim wsForm As Worksheet, wsData As Worksheet
Dim lo As ListObject
Dim r As ListRow
Dim vDatum As Variant, vManad As String, vTyp As String, vKategori As String
Dim vBelopp As Variant, vKommentar As String On Error GoTo ErrHandler
Set wsForm = ThisWorkbook.Worksheets("Formulär")
Set wsData = ThisWorkbook.Worksheets("Budgetöversikt")
Set lo = wsData.ListObjects("tblBudget")
vDatum = wsForm.Range("nmDatum").Value
vTyp = CStr(wsForm.Range("nmTyp").Value)
vKategori = CStr(wsForm.Range("nmKategori").Value)
vBelopp = wsForm.Range("nmBelopp").Value
vKommentar = CStr(wsForm.Range("nmKommentar").Value)
' Räkna fram månadstext från datum om B4 är tomt
vManad = CStr(wsForm.Range("nmManad").Value)
If Len(Trim$(vManad)) = 0 Then
vManad = GetMonthText(vDatum)
End If
' Validering
If Not IsDate(vDatum) Then Err.Raise vbObjectError + 100, , "Välj ett giltigt datum."
If vTyp <> "Inkomst" And vTyp <> "Utgift" Then Err.Raise vbObjectError + 101, , "Välj Typ: Inkomst eller Utgift."
If Len(Trim$(vKategori)) = 0 Then Err.Raise vbObjectError + 102, , "Välj en Kategori."
If Not IsNumeric(vBelopp) Then Err.Raise vbObjectError + 103, , "Ange ett numeriskt belopp."
If Len(Trim$(vManad)) = 0 Then Err.Raise vbObjectError + 104, , "Kunde inte bestämma Månad (åååå-mm)."
' För utgift: säkerställ negativt tal (om du vill standardisera)
If vTyp = "Utgift" And vBelopp > 0 Then vBelopp = -CDbl(vBelopp)
' Lägg till raden
Set r = lo.ListRows.Add
With r.Range
.Cells(1, 1).Value = CDate(vDatum) ' Datum
.Cells(1, 2).Value = vManad ' Månad (text "yyyy-mm") - tabellkolumnen har ändå formel, men ingen skada att fylla
.Cells(1, 3).Value = vTyp ' Typ
.Cells(1, 4).Value = vKategori ' Kategori
.Cells(1, 5).Value = CDbl(vBelopp) ' Belopp
.Cells(1, 6).Value = vKommentar ' Kommentar
End With
MsgBox "Transaktionen sparades.", vbInformation
Exit Sub
ErrHandler:
MsgBox "Kunde inte spara: " & Err.Description, vbExclamation
End Sub
6.3 NyRensa – töm formuläret för ny post
Public Sub NyRensa()
On Error Resume Next
With ThisWorkbook.Worksheets("Formulär")
.Range("nmDatum").Value = Date
.Range("nmManad").ClearContents
.Range("nmTyp").ClearContents
.Range("nmKategori").ClearContents
.Range("nmBelopp").ClearContents
.Range("nmKommentar").ClearContents
End With
End Sub
6.4 SkapaMånadsrapport – bygg ett nytt blad för vald månad
Makrot skapar ett nytt blad med namnet Månadsrapport_ÅÅÅÅ-MM, kopierar matchande transaktioner och lägger in summeringsformler i I3–I5.
Public Sub SkapaMånadsrapport()
Dim wsData As Worksheet, wsNew As Worksheet, wsForm As Worksheet
Dim lo As ListObject, rng As Range, r As Range
Dim monthText As String, newName As String
Dim nextRow As Long On Error GoTo ErrHandler
Set wsForm = ThisWorkbook.Worksheets("Formulär")
Set wsData = ThisWorkbook.Worksheets("Budgetöversikt")
Set lo = wsData.ListObjects("tblBudget")
monthText = CStr(wsForm.Range("nmManad").Value)
If Len(Trim$(monthText)) = 0 Then
monthText = GetMonthText(wsForm.Range("nmDatum").Value)
End If
If Len(Trim$(monthText)) = 0 Then Err.Raise vbObjectError + 200, , "Ange eller välj en månad."
newName = "Månadsrapport_" & monthText
' Ta bort gammal rapport med samma namn (frivilligt)
On Error Resume Next
Application.DisplayAlerts = False
ThisWorkbook.Worksheets(newName).Delete
Application.DisplayAlerts = True
On Error GoTo ErrHandler
' Skapa nytt blad och rubriker
Set wsNew = ThisWorkbook.Worksheets.Add(After:=wsData)
wsNew.Name = newName
wsNew.Range("A1").Value = "Månad:"
wsNew.Range("B1").Value = monthText
wsNew.Range("A3").Resize(1, 6).Value = Array("Datum", "Månad", "Typ", "Kategori", "Belopp", "Kommentar")
nextRow = 4
' Kopiera rader för vald månad (baserat på tabellens Månadskolumn)
Set rng = lo.DataBodyRange
If Not rng Is Nothing Then
For Each r In rng.Rows
If CStr(r.Cells(1, 2).Value) = monthText Then ' kolumn 2 = Månad
wsNew.Cells(nextRow, 1).Resize(1, 6).Value = Array( _
r.Cells(1, 1).Value, _
r.Cells(1, 2).Value, _
r.Cells(1, 3).Value, _
r.Cells(1, 4).Value, _
r.Cells(1, 5).Value, _
r.Cells(1, 6).Value)
nextRow = nextRow + 1
End If
Next r
End If
' Rubriker i kolumn H–I för summeringar
wsNew.Range("H3").Value = "Totala inkomster:"
wsNew.Range("H4").Value = "Totala utgifter:"
wsNew.Range("H5").Value = "Saldo:"
' Formler – använd STRUKTURERADE REFERENSER (undvik kolumn A:A etc.)
wsNew.Range("I3").Formula = "=SUMIFS(tblBudget[Belopp],tblBudget[Typ],""Inkomst"",tblBudget[Månad],$B$1)"
wsNew.Range("I4").Formula = "=SUMIFS(tblBudget[Belopp],tblBudget[Typ],""Utgift"",tblBudget[Månad],$B$1)"
wsNew.Range("I5").Formula = "=I3+I4"
MsgBox "Månadsrapport skapad: " & newName, vbInformation
Exit Sub
ErrHandler:
MsgBox "Kunde inte skapa månadsrapport: " & Err.Description, vbExclamation
End Sub
Varför dubbla citattecken i .Formula?
VBA-strängar omges av"...". När formeln i sig behöver citattecken (t.ex. runt textkriteriet"Inkomst"i SUMMA.OMF) måste du skriva""Inkomst""för att VBA ska tolka det som ett citattecken i själva formeln. Annars blir det syntaxfel – exakt det som många stöter på första gången.
6.5 ExporteraMånadCSV – spara valda månadens rader till CSV
Public Sub ExporteraMånadCSV()
Dim wsForm As Worksheet, wsData As Worksheet
Dim lo As ListObject, rng As Range, r As Range
Dim monthText As String
Dim wbTmp As Workbook, wsTmp As Worksheet
Dim fName As Variant
Dim nextRow As Long On Error GoTo ErrHandler
Set wsForm = ThisWorkbook.Worksheets("Formulär")
Set wsData = ThisWorkbook.Worksheets("Budgetöversikt")
Set lo = wsData.ListObjects("tblBudget")
monthText = CStr(wsForm.Range("nmManad").Value)
If Len(Trim$(monthText)) = 0 Then
monthText = GetMonthText(wsForm.Range("nmDatum").Value)
End If
If Len(Trim$(monthText)) = 0 Then Err.Raise vbObjectError + 300, , "Ange eller välj en månad."
fName = Application.GetSaveAsFilename(InitialFileName:="Budget_" & monthText & ".csv", fileFilter:="CSV (*.csv),*.csv")
If fName = False Then Exit Sub
Set wbTmp = Application.Workbooks.Add
Set wsTmp = wbTmp.Worksheets(1)
' Rubriker
wsTmp.Range("A1").Resize(1, 6).Value = Array("Datum", "Månad", "Typ", "Kategori", "Belopp", "Kommentar")
nextRow = 2
Set rng = lo.DataBodyRange
If Not rng Is Nothing Then
For Each r In rng.Rows
If CStr(r.Cells(1, 2).Value) = monthText Then ' Månadskolumn
wsTmp.Cells(nextRow, 1).Resize(1, 6).Value = Array( _
r.Cells(1, 1).Value, _
r.Cells(1, 2).Value, _
r.Cells(1, 3).Value, _
r.Cells(1, 4).Value, _
r.Cells(1, 5).Value, _
r.Cells(1, 6).Value)
nextRow = nextRow + 1
End If
Next r
End If
Application.DisplayAlerts = False
wbTmp.SaveAs CStr(fName), xlCSVUTF8
Application.DisplayAlerts = True
wbTmp.Close SaveChanges:=False
MsgBox "CSV exporterad: " & CStr(fName), vbInformation
Exit Sub
ErrHandler:
MsgBox "Kunde inte exportera: " & Err.Description, vbExclamation
End Sub
6.6 Koppla knapparna
Högerklicka på varje form-knapp i Formulär och välj Tilldela makro…:
SPARA RAD →
SparaRadNY / Rensa →
NyRensaMånadsrapport →
SkapaMånadsrapportExportera månad (CSV) →
ExporteraMånadCSV
7) Instruktionsblad (valfritt men rekommenderas)
På Instruktioner kan du lägga en kort intern dokumentation:
Hur formuläret fylls i
Vad knapparna gör
Vad tabellen heter och vilka kolumner som finns
Namngivna celler och vad de används till
Kort felsökningsavsnitt (se nästa kapitel)
Det gör filen självdokumenterande – perfekt om du delar den med familj/kollegor.
8) Felsökning – vanliga problem och snabba lösningar
1) SUMMA.OMF fungerar inte / ger 0 fast data finns
Kontrollera att Månad i tabellen och den månad du söker på i Översikt!B3 verkligen har samma format (text
åååå-mm).Rekommendationen är att låta kolumnen Månad i tabellen sättas av en formel:
=TEXT([@Datum];"åååå-mm"). Då blir allting konsekvent.
2) Syntaxfel i VBA när du sätter .Formula
Minnesregeln: dubbla citattecken kring textkriterier inne i formeln.
Exempel (rätt):wsNew.Range("I3").Formula = "=SUMIFS(tblBudget[Belopp],tblBudget[Typ],""Inkomst"",tblBudget[Månad],$B$1)"
Exempel (fel – ger syntaxfel):
wsNew.Range("I3").Formula = '=SUMIFS(tblBudget[Belopp],tblBudget[Typ],"Inkomst",tblBudget[Månad],$B$1)'
3) Beloppens tecken blir “fel”
Bestäm en standard: inkomster som positiva tal, utgifter som negativa.
I makrot
SparaRadser du att vi tvingar utgift till negativt tal om användaren råkar skriva positivt.
4) Rullistan för Kategori visas inte eller visar fel lista
Se till att B5 (Typ) är ifylld (
InkomstellerUtgift) innan du klickar i kategori.Kontrollera att namngivna områden
rngInkomstKategorierochrngUtgiftKategorierverkligen refererar till dina listor på bladet Listor.
5) “Makron är inaktiverade” när jag öppnar filen
Klicka Aktivera innehåll i den gula säkerhetsraden, eller lägg filens mapp i Betrodda platser (Alternativ > Säkerhetscenter).
9) Bonus: gör översikten snyggare (valfritt)
Diagram: Infoga ett cirkeldiagram/donut över utgifter per kategori för vald månad (via pivottabell eller
FILTER+diagram).Skjutreglage för månad: Om du lagrar Månad som ett riktigt datum (t.ex. månadens första dag) kan du använda Tidslinje (Pivot-tidslinje) eller ett Formulärkontroll-spårreglage kopplat till datum.
Tydliga format: Anpassa datumformat i tabellen (
åååå-mm-dd) och belopp med tusentalsavgränsare.Dataverifiering för datum: Säkerställ att B3 i formuläret är ett datum (Dataverifiering > Datum).
10) Så använder du mallen i vardagen (rekommenderat arbetsflöde)
Gå till Formulär.
Fyll i Datum. (Månaden räknas fram automatiskt, eller välj/skriv
åååå-mmvid behov.)Välj Typ (
Inkomst/Utgift).Välj Kategori (listan anpassas automatiskt efter Typ).
Skriv Belopp (positivt för inkomst, negativt för utgift – makrot rättar vid behov).
Lägg ev. Kommentar.
Klicka SPARA RAD.
Upprepa för fler transaktioner. Använd NY / Rensa för att tömma formuläret mellan poster.
På Översikt anger du önskad månad i
B3för att se totalsiffror.Klicka Månadsrapport om du vill få ett separat blad för just den månaden (enkelt att skriva ut eller dela).
Klicka Exportera månad (CSV) om du vill skicka siffrorna vidare till ett bokföringssystem eller spara per månad.
11) Sammanfattning
I den här guiden har du byggt en komplett PrivatBudget Pro-mall i Excel:
Ett Formulär för snabb, korrekt inmatning – med rullistor och namngivna celler.
En robust databas i tblBudget där alla transaktioner hamnar.
En Översikt som visar inkomster, utgifter och saldo för valfri månad med SUMMA.OMF.
Ett Månadsrapport-makro som skapar snygga månadsblad vid behov.
En Export-funktion till CSV så du lätt kan dela, säkerhetskopiera eller importera vidare.
Tydliga riktlinjer och felsökning (bl.a. det klassiska citattecken-felet i VBA).
Fördelen med detta upplägg är att det är enkelt att använda i vardagen men ändå skalbart: du kan lägga till fler kategorier, diagram, pivottabeller och rapporter utan att ändra grundidén. Och eftersom tabellen och makrona använder standardiserade fält (Datum, Månad åååå-mm, Typ, Kategori, Belopp, Kommentar) blir mallen långsiktigt hållbar.
Lycka till – och tveka inte att utöka vidare med exempelvis en årsöversikt, sparkvoter, budget vs. utfall och snygga dashboards! Om du fastnar i något steg kan du plocka bitarna ovan (rullistor, namngivna celler, tabellformler eller makron) och testa dem ett i taget tills allt sitter. När strukturen väl är på plats går resten nästan av sig själv.
✅ Klar att köra igång? Ladda ner den färdiga Excel-mallen här:
PrivatBudget_Pro_Version_2_FIX.zip



