Hver uke snakker jeg med økonomisjefer, controllere og prosjektledere som bruker timevis på de samme Excel-oppgavene om og om igjen. Dataimport hver mandag. Rapportformatering hver fredag. E-postutsendelser den første i hver måned.
De vet at det finnes en bedre måte, men vet ikke hvor de skal begynne.
Etter ti år som Excel-konsulent har jeg sett nøyaktig hvilke oppgaver som både er vanligst OG enklest å automatisere. Dette er de 10 som gir raskest resultater – komplett med kodeeksempler du kan begynne å bruke med en gang.
1. Formatere rapporter konsekvent
Tidsbesparelse: 10-15 minutter per rapport
Du får rådata fra systemet. Hver gang må du gjøre det om til presentasjonsformat: overskriftsraden fet og farget, kolonner tilpasset, tallkolonner med tusenskilletegn, totalsum nederst.
Med 5 rapporter per uke er det én time hver uke – 52 timer per år.
VBA-løsning
Sub FormateraRapport()
Dim ws As Worksheet
Dim sistaRad As Long
Set ws = ActiveSheet
sistaRad = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
' Formatera rubrikrad
With ws.Range("A1:E1")
.Font.Bold = True
.Font.Size = 12
.Interior.Color = RGB(68, 114, 196)
.Font.Color = RGB(255, 255, 255)
.HorizontalAlignment = xlCenter
End With
' Lägg till ramar
ws.Range("A1:E" & sistaRad).Borders.LineStyle = xlContinuous
' Formatera sifferkolumner (kolumn D och E)
ws.Range("D2:E" & sistaRad).NumberFormat = "#,##0"
' Lägg till totalsumma
ws.Cells(sistaRad + 2, 1).Value = "TOTALT"
ws.Cells(sistaRad + 2, 1).Font.Bold = True
ws.Cells(sistaRad + 2, 4).Formula = "=SUM(D2:D" & sistaRad & ")"
ws.Cells(sistaRad + 2, 5).Formula = "=SUM(E2:E" & sistaRad & ")"
' Anpassa kolumnbredder
ws.Columns("A:E").AutoFit
MsgBox "Rapport formaterad!", vbInformation
End Sub
Hva skjer her: – Finner automatisk siste rad med data (fungerer for alle størrelser) – Formaterer overskriftsraden med blå bakgrunn og hvit tekst – Legger til rammer rundt alle data – Formaterer tall med tusenskilletegn – Legger til summering automatisk – Tilpasser kolonnebredder slik at alt vises
Slik bruker du det: Lim inn koden i en modul og legg til en knapp i rapportmalen din. Hver gang du får nye data: lim inn, klikk på knappen, ferdig.
2. Importere data fra flere filer
Tidsbesparelse: 30-60 minutter per dataimport
Du har 15 Excel-filer fra ulike avdelinger. All data skal samles i én hovedfil. Hver måned åpner du hver fil, kopierer riktig område og limer inn i hovedfilen.
Med månedlig sammenstilling er det 12 timer per år. Med ukentlig sammenstilling: 48 timer.
VBA-løsning
Sub ImporteraFlerFiler()
Dim mappSökväg As String
Dim filNamn As String
Dim wbKälla As Workbook
Dim wsKälla As Worksheet
Dim wsMål As Worksheet
Dim målRad As Long
' Din mapp med källfiler
mappSökväg = "C:\Data\Månadsrapporter\"
Set wsMål = ThisWorkbook.Worksheets("Sammanställning")
målRad = 2 ' Börja från rad 2 (rad 1 är rubriker)
' Rensa gammal data
wsMål.Range("A2:E10000").ClearContents
' Loopa genom alla Excel-filer i mappen
filNamn = Dir(mappSökväg & "*.xlsx")
Do While filNamn <> ""
' Öppna källfil (utan att visa den)
Set wbKälla = Workbooks.Open(mappSökväg & filNamn, ReadOnly:=True)
Set wsKälla = wbKälla.Worksheets(1)
' Hitta sista raden i källfilen
Dim källSistaRad As Long
källSistaRad = wsKälla.Cells(wsKälla.Rows.Count, "A").End(xlUp).Row
' Kopiera data (från rad 2 för att hoppa över rubriker)
If källSistaRad > 1 Then
wsKälla.Range("A2:E" & källSistaRad).Copy
wsMål.Cells(målRad, 1).PasteSpecial xlPasteValues
målRad = målRad + (källSistaRad - 1)
End If
' Stäng källfil utan att spara
wbKälla.Close SaveChanges:=False
' Nästa fil
filNamn = Dir
Loop
Application.CutCopyMode = False
MsgBox "Importerade data från " & (målRad - 2) & " rader", vbInformation
End Sub
Bruk: Endre mappSökväg til din faktiske mappe. Legg alle kildefilene der. Kjør makroen. All data samles automatisk.
Tips: Lagre denne makroen i sammenstillingsmalen din, så har du den klar hver måned.
3. Sende e-post fra Excel
Tidsbesparelse: 20-30 minutter per utsendelse
Du har en kundeliste. Hver kunde skal få en personlig e-post med sin spesifikke informasjon (saldo, ordrehistorikk, påminnelse).
Manuelt: kopiere data, lime inn i Outlook, sende. Gjenta 50 ganger.
VBA-løsning
Sub SkickaPersonligaMail()
Dim OutlookApp As Object
Dim Mail As Object
Dim ws As Worksheet
Dim sistaRad As Long
Dim i As Long
Set ws = ThisWorkbook.Worksheets("Kunder")
sistaRad = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
Set OutlookApp = CreateObject("Outlook.Application")
' Loopa genom varje kund
For i = 2 To sistaRad
Set Mail = OutlookApp.CreateItem(0)
With Mail
.To = ws.Cells(i, 3).Value ' Email i kolumn C
.Subject = "Månatlig sammanställning - " & ws.Cells(i, 1).Value
.Body = "Hej " & ws.Cells(i, 2).Value & "," & vbCrLf & vbCrLf & _
"Ditt saldo per " & Date & " är: " & ws.Cells(i, 4).Value & " kr" & vbCrLf & vbCrLf & _
"Antal ordrar denna månad: " & ws.Cells(i, 5).Value & vbCrLf & vbCrLf & _
"Mvh," & vbCrLf & "Excel Department"
' .Send ' Skickar direkt - använd för automation
.Display ' Visar mailet först - bra för testning
End With
Set Mail = Nothing
Next i
Set OutlookApp = Nothing
MsgBox "Skapade " & (sistaRad - 1) & " mail", vbInformation
End Sub
VIKTIG: Bruk .Display først for å se at e-postene ser riktige ut. Når du er sikker, bytter du til .Send for automatisk utsendelse.
Kolonnestruktur i eksempelet: – A: Kunde-ID – B: Kundenavn – C: E-post – D: Saldo – E: Antall ordrer
Tilpass til dine data.
4. Fjerne tomme rader
Tidsbesparelse: 5-10 minutter per fil
Du importerer data fra et system. Det inneholder mange tomme rader. Å klikke gjennom og slette dem manuelt tar tid, og det er lett å overse noen.
VBA-løsning
Sub TaBortTommaRader()
Dim ws As Worksheet
Dim sistaRad As Long
Dim i As Long
Dim antalBorttagna As Long
Set ws = ActiveSheet
sistaRad = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
antalBorttagna = 0
' Loopa bakifrån (viktigt när man raderar)
For i = sistaRad To 2 Step -1
' Om hela raden är tom
If Application.WorksheetFunction.CountA(ws.Rows(i)) = 0 Then
ws.Rows(i).Delete
antalBorttagna = antalBorttagna + 1
End If
Next i
MsgBox "Tog bort " & antalBorttagna & " tomma rader", vbInformation
End Sub
Hvorfor løkke bakover? Hvis du sletter rad 5, blir den gamle rad 6 nå rad 5. Ved å begynne nederst unngår du å hoppe over rader.
5. Kopiere filter til nytt ark
Tidsbesparelse: 10-15 minutter per filtrering
Du trenger ofte å kopiere alle rader som matcher et kriterium til et nytt ark. “Alle kunder fra Stockholm”, “Alle ordrer over 10 000 SEK”, osv.
VBA-løsning
Sub KopieraFiltrerad()
Dim wsKälla As Worksheet
Dim wsMål As Worksheet
Dim sistaRad As Long
Dim filterVärde As String
Set wsKälla = ThisWorkbook.Worksheets("AllData")
' Skapa nytt blad för resultatet
Set wsMål = ThisWorkbook.Worksheets.Add
wsMål.Name = "Filtrerad_" & Format(Now, "yyyymmdd_hhmmss")
sistaRad = wsKälla.Cells(wsKälla.Rows.Count, "A").End(xlUp).Row
' Fråga efter filtervärde
filterVärde = InputBox("Vilket värde vill du filtrera på? (t.ex. Stockholm)")
If filterVärde = "" Then Exit Sub
' Kopiera rubriker
wsKälla.Rows(1).Copy wsMål.Rows(1)
' Tillämpa autofilter
wsKälla.Range("A1:E" & sistaRad).AutoFilter Field:=2, Criteria1:=filterVärde
' Kopiera synliga celler
wsKälla.Range("A2:E" & sistaRad).SpecialCells(xlCellTypeVisible).Copy
wsMål.Range("A2").PasteSpecial xlPasteValues
' Ta bort filter
wsKälla.AutoFilterMode = False
Application.CutCopyMode = False
MsgBox "Kopierade filtrerad data till nytt blad", vbInformation
End Sub
Bruk: Kjør makroen, angi filterverdi (f.eks. “Stockholm”), ferdig. Alle matchende rader kopieres til et nytt ark.
6. Oppsummere data med pivottabell
Tidsbesparelse: 15-20 minutter per oppsummering
Pivottabeller er kraftfulle, men tar tid å sette opp. Hvis du lager samme type pivot hver uke, kan du automatisere det.
VBA-løsning
Sub SkapaPivot()
Dim wsKälla As Worksheet
Dim wsPivot As Worksheet
Dim pivotCache As PivotCache
Dim pivotTabell As PivotTable
Dim dataOmråde As Range
Dim sistaRad As Long
Set wsKälla = ThisWorkbook.Worksheets("Försäljning")
sistaRad = wsKälla.Cells(wsKälla.Rows.Count, "A").End(xlUp).Row
Set dataOmråde = wsKälla.Range("A1:E" & sistaRad)
' Skapa nytt blad för pivot
On Error Resume Next
Set wsPivot = ThisWorkbook.Worksheets("Pivot")
If wsPivot Is Nothing Then
Set wsPivot = ThisWorkbook.Worksheets.Add
wsPivot.Name = "Pivot"
Else
wsPivot.Cells.Clear
End If
On Error GoTo 0
' Skapa pivot cache och tabell
Set pivotCache = ThisWorkbook.PivotCaches.Create( _
SourceType:=xlDatabase, _
SourceData:=dataOmråde)
Set pivotTabell = pivotCache.CreatePivotTable( _
TableDestination:=wsPivot.Range("A1"), _
TableName:="FörsäljningsPivot")
' Konfigurera pivot-tabellen
With pivotTabell
' Lägg till fält
.PivotFields("Produkt").Orientation = xlRowField
.PivotFields("Månad").Orientation = xlColumnField
With .PivotFields("Försäljning")
.Orientation = xlDataField
.Function = xlSum
.NumberFormat = "#,##0"
End With
End With
MsgBox "Pivot-tabell skapad!", vbInformation
End Sub
Tilpass: Endre feltnavnene (“Produkt”, “Måned”, “Salg”) til dine faktiske kolonnenavn.
7. Lagre hvert ark som egen fil
Tidsbesparelse: 10-15 minutter når du deler ut filer
Du har en arbeidsbok med ett ark per avdeling. Hver avdeling skal få sin egen fil. Manuelt: kopiere ark, lime inn i ny arbeidsbok, lagre, gjenta 10 ganger.
VBA-løsning
Sub SparaVarjeBladSomFil()
Dim ws As Worksheet
Dim nyWb As Workbook
Dim sparaMapp As String
' Mapp där filerna ska sparas
sparaMapp = ThisWorkbook.Path & "\Exporterade blad\"
' Skapa mapp om den inte finns
If Dir(sparaMapp, vbDirectory) = "" Then
MkDir sparaMapp
End If
' Loopa genom alla synliga blad
For Each ws In ThisWorkbook.Worksheets
If ws.Visible = xlSheetVisible Then
' Kopiera bladet till ny arbetsbok
ws.Copy
Set nyWb = ActiveWorkbook
' Spara med bladnamn som filnamn
nyWb.SaveAs Filename:=sparaMapp & ws.Name & ".xlsx"
nyWb.Close SaveChanges:=False
End If
Next ws
MsgBox "Alla blad sparade som separata filer i:" & vbCrLf & sparaMapp, vbInformation
End Sub
Resultat: Det opprettes en undermappe med alle arkene dine som separate filer, klare til å sendes til den aktuelle avdelingen.
8. Konvertere tekst til dato
Tidsbesparelse: 10-20 minutter per konvertering
Du importerer data der datoer er tekst (“20260130” eller “30.01.2026”), og Excel forstår ikke at det er datoer. Manuell konvertering av 1000 rader er tidkrevende.
VBA-løsning
Sub KonverteraTillDatum()
Dim ws As Worksheet
Dim sistaRad As Long
Dim i As Long
Dim textDatum As String
Dim riktigtDatum As Date
Set ws = ActiveSheet
sistaRad = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
' Kolumn A innehåller text-datum som "20260130"
For i = 2 To sistaRad
textDatum = ws.Cells(i, 1).Value
' Om formatet är YYYYMMDD
If Len(textDatum) = 8 And IsNumeric(textDatum) Then
riktigtDatum = DateSerial(Left(textDatum, 4), _
Mid(textDatum, 5, 2), _
Right(textDatum, 2))
ws.Cells(i, 2).Value = riktigtDatum
ws.Cells(i, 2).NumberFormat = "yyyy-mm-dd"
End If
Next i
MsgBox "Konvertering klar! Kolla kolumn B", vbInformation
End Sub
Tilpasning for ulike formater: – “DD.MM.YYYY”: Del på punktum og bruk DateSerial – “YYYY-MM-DD”: Excel forstår ofte dette direkte, men CDate() kan brukes
9. Finne og markere duplikater
Tidsbesparelse: 15-30 minutter per gjennomgang
Du har en kundeliste eller produktdatabase. Du må finne duplikater (samme e-post, samme produktkode) og markere dem for gjennomgang.
VBA-løsning
Sub MarkeraDubbletter()
Dim ws As Worksheet
Dim sistaRad As Long
Dim i As Long, j As Long
Dim värde1 As Variant, värde2 As Variant
Dim antalDubbletter As Long
Set ws = ActiveSheet
sistaRad = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
antalDubbletter = 0
' Rensa tidigare markeringar
ws.Range("A2:A" & sistaRad).Interior.ColorIndex = xlNone
' Jämför varje cell med alla under den
For i = 2 To sistaRad - 1
värde1 = ws.Cells(i, 1).Value
For j = i + 1 To sistaRad
värde2 = ws.Cells(j, 1).Value
' Om matchning, markera båda
If värde1 = värde2 And värde1 <> "" Then
ws.Cells(i, 1).Interior.Color = RGB(255, 200, 200)
ws.Cells(j, 1).Interior.Color = RGB(255, 200, 200)
antalDubbletter = antalDubbletter + 1
End If
Next j
Next i
MsgBox "Hittade " & antalDubbletter & " dubbletter (markerade i rött)", vbInformation
End Sub
Merk: Denne makroen kan være treg på svært store datasett (>10 000 rader). For store datamengder bør du bruke Dictionary-objekt for raskere ytelse.
10. Ta sikkerhetskopi av arbeidsboken automatisk
Tidsbesparelse: Forhindrer datatap
Ikke direkte en tidsbesparelse, men hvor ofte har du ønsket at du hadde en sikkerhetskopi fra i går? Denne makroen oppretter automatisk en datostemplet kopi når du lagrer.
VBA-løsning
Denne koden legges i ThisWorkbook (ikke en modul):
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim backupMapp As String
Dim backupNamn As String
backupMapp = ThisWorkbook.Path & "\Backups\"
' Skapa backup-mapp om den inte finns
If Dir(backupMapp, vbDirectory) = "" Then
MkDir backupMapp
End If
' Skapa filnamn med datum och tid
backupNamn = backupMapp & _
Replace(ThisWorkbook.Name, ".xlsm", "") & _
"_" & Format(Now, "yyyymmdd_hhmmss") & ".xlsm"
' Spara backup
ThisWorkbook.SaveCopyAs backupNamn
End Sub
Slik fungerer det: Hver gang du lagrer, opprettes det automatisk en kopi i en “Backups”-mappe med dato og klokkeslett i filnavnet.
Tips: Rydd ut gamle sikkerhetskopier regelmessig for å spare diskplass.
Kom i gang med automatisering i dag
Du har nå 10 konkrete eksempler på oppgaver du kan automatisere. Hvert eksempel sparer tid, reduserer feil og gjør arbeidet ditt mer konsekvent.
Neste steg
1. Velg en oppgave Hvilken av de 10 oppgavene gjør du oftest? Begynn der.
2. Test koden Kopier relevant kode til en modul i Excel. Test på eksempeldata først.
3. Tilpass til din situasjon Endre kolonnenavn, filstier og formater slik at det passer dine data.
4. Lær mer Hvis du vil forstå i detalj hvordan koden fungerer, kan du lese vår VBA for nybegynnere-guide eller vår komplette guide til Excel-automatisering.
5. Få profesjonell hjelp Hvis du trenger mer avansert automatisering eller vil at noen skal bygge løsningen for deg, kontakt oss. Vi hjelper bedrifter med å automatisere alt fra enkle makroer til komplekse rapporteringssystemer.
Ta et VBA-kurs
Hvis du seriøst vil lære VBA og kunne bygge egne løsninger, anbefaler vi vårt VBA-kurs for bedrifter. På én dag lærer du grunnleggende ferdigheter og får verktøy for å automatisere dine spesifikke arbeidsflyter.
Vanlige spørsmål
Kan jeg kombinere flere av disse makroene? Absolutt. Du kan ha mange makroer i samme arbeidsbok og kjøre dem etter hverandre eller kombinere funksjonaliteten.
Fungerer dette på Mac? De fleste eksemplene fungerer på Mac, men e-postfunksjonen kan kreve justeringer. Windows- og Mac-versjonene av VBA er litt forskjellige.
Må jeg kunne programmering? Nei. Du kan kopiere koden og justere de delene som trengs (filstier, kolonnenavn osv.). Men for å virkelig forstå og bygge egne løsninger anbefaler vi grunnleggende VBA-kunnskap.
Er det trygt å kjøre kode jeg har funnet på nettet? Kode fra pålitelige kilder (som denne) er trygg – den gjør bare det den sier. Les alltid gjennom koden før du kjører den. Unngå kode fra ukjente fora eller nettsteder.
Hva skjer hvis noe går galt? Trykk Ctrl + Z rett etter at du har kjørt makroen for å angre. Test alltid på en kopi først. Profesjonelle løsninger har feilhåndtering innebygd.
Begynn å spare tid i dag
Hver uke du venter, er en uke med manuelt arbeid du kunne ha automatisert. Ta ett av disse eksemplene, test det og se hvor mye tid du sparer. Så går du videre til neste.
Automatisering er ikke vanskelig. Det er bare ukjent. Nå er det ikke ukjent lenger.
Trenger du hjelp til å komme i gang?
Book en gratis samtale på 15 minutter, så diskuterer vi hvilke av oppgavene dine som er verdt å automatisere først.
Skrevet av Lukas Lilja, Excel Department. Vi har hjulpet hundrevis av bedrifter med å automatisere Excel-prosessene sine og spare tusenvis av timer årlig.
Trenger dere hjelp med dette? Våre VBA-kurs hjelper dere – den første konsultasjonen er kostnadsfri.
Book en gratis samtale eller ring 010-264 20 20.

