VBA kode: Summere omsetning etter dato

[:nb]

Avansert summerhvis

Jeg hadde en utfordring som flere kan behøve hjelp med. En summerhvis fungerte ikke bra nok til mitt behov så jeg tenkte jeg kunne programmere en liten funksjon for å hjelpe meg. Jeg kunne sikkert gjort dette enda smartere og brukt mer tid, men håper andre ser nytten og kan bruke det til noe.

Jeg hadde en tabell med mine ordre:

OrdreID Kunde Ordredatoen Moms Forfalsdato  Totalt  Med moms  Moms kr
201810000 Kunde 1 02.01.2018 0 % 06.02.2018  kr        1 000,00  kr        1 000,00  kr                  –
201810001 Kunde 2 15.02.2018 25 % 01.03.2018  kr        2 000,00  kr        2 500,00  kr           500,00
201810002 Kunde 3 15.02.2018 0 % 01.03.2018  kr        3 000,00  kr        3 000,00  kr                  –
201810003 Kunde 4 15.02.2018 25 % 01.03.2018  kr        4 000,00  kr        5 000,00  kr        1 000,00
201810004 Kunde 5 15.02.2018 0 % 19.03.2018  kr        5 000,00  kr        5 000,00  kr                  –
201810005 Kunde 6 19.03.2018 25 % 02.04.2018  kr        6 000,00  kr        7 500,00  kr        1 500,00
201810006 Kunde 7 20.03.2018 25 % 03.04.2018  kr        7 000,00  kr        8 750,00  kr        1 750,00
201810007 Kunde 8 20.03.2018 25 % 03.04.2018  kr        8 000,00  kr      10 000,00  kr        2 000,00
201810008 Kunde 9 23.03.2018 0 % 06.04.2018  kr        9 000,00  kr        9 000,00  kr                  –

Ved å sette parametre i funksjonen som Range så kan jeg gripe hele kolonnen uansett hvor lang den blir.

I Excel har jeg så et oppsett slik:

 Inntekt med moms jan/feb  kr            6 000,00 01.01.2018
 Inntekt uten moms jan/feb  kr            9 000,00 28.02.2018
 Inntekt med moms mar/apr  kr             21 000,00 01.03.2018
 Inntekt uten moms mar/apr  kr               9 000,00 30.04.2018
 Inntekt med moms mai/juni  kr                         – 01.05.2018
 Inntekt uten moms mai/juni  kr                         – 30.06.2018
 Inntekt med moms juli/aug  kr                         – 01.07.2018
 Inntekt uten moms juli/aug  kr                         – 31.08.2018
 Inntekt med moms sep/okt  kr                         – 01.09.2018
 Inntekt uten moms sep/okt  kr                         – 31.10.2018
 Inntekt med moms nov/des  kr                         – 01.11.2018
 Inntekt uten moms nov/des  kr                         – 31.12.2018

Selve Excel-funksjonen

I Excel der jeg skal beregne summen skriver jeg:=SumOmsMedMoms(Arbeidsbok[[#Alle];[Ordredatoen]];Arbeidsbok[[#Alle];[Totalt]];M11;M12;Arbeidsbok[[#Alle];[MvaProsent]])

Der M11 og M12 er hendholdsvis første dato og siste dato – eksempelvis 1.1.2018-28.2.2018. Arbeidsbok[[#Alle];[Ordredatoen]] er alle datoene mine. Arbeidsbok[[#Alle];[Totalt]] er alle tallene mine. Arbeidsbok[[#Alle];[MvaProsent]] er alle momsprosentene mine.

Funksjonene som beregner dette er da:

Funksjonene:

Denne summerer de med moms.

Public Function SumOmsMedMoms(vDato As Range, vSum As Range, vFra As Range, vTil As Range, vMoms As Range)

Dim i
Dim sum
For i = 2 To vDato.Count + 1
If vDato(i, 1) >= vFra.Value And vDato(i, 1) <= vTil.Value And vMoms(i, 1) > 0 Then
sum = sum + vSum(i, 1)
End If
Next i
SumOmsMedMoms = sum

End Function

Denne summerer de uten moms.

Public Function SumOmsUtenMoms(vDato As Range, vSum As Range, vFra As Range, vTil As Range, vMoms As Range)

Dim i
Dim sum
For i = 2 To vDato.Count + 1
If vDato(i, 1) >= vFra.Value And vDato(i, 1) <= vTil.Value And vMoms(i, 1) = 0 Then
sum = sum + vSum(i, 1)
End If
Next i
SumOmsUtenMoms = sum

End Function[:]

Leave a Reply

Your email address will not be published. Required fields are marked *