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.