Wednesday 3.Apr 2018

VBA kode: Summere omsetning etter dato

0 comments

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:

OrdreIDKundeOrdredatoenMomsForfalsdato Totalt Med moms Moms kr
201810000Kunde 102.01.20180 %06.02.2018 kr        1 000,00 kr        1 000,00 kr                  –
201810001Kunde 215.02.201825 %01.03.2018 kr        2 000,00 kr        2 500,00 kr           500,00
201810002Kunde 315.02.20180 %01.03.2018 kr        3 000,00 kr        3 000,00 kr                  –
201810003Kunde 415.02.201825 %01.03.2018 kr        4 000,00 kr        5 000,00 kr        1 000,00
201810004Kunde 515.02.20180 %19.03.2018 kr        5 000,00 kr        5 000,00 kr                  –
201810005Kunde 619.03.201825 %02.04.2018 kr        6 000,00 kr        7 500,00 kr        1 500,00
201810006Kunde 720.03.201825 %03.04.2018 kr        7 000,00 kr        8 750,00 kr        1 750,00
201810007Kunde 820.03.201825 %03.04.2018 kr        8 000,00 kr      10 000,00 kr        2 000,00
201810008Kunde 923.03.20180 %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,0001.01.2018
 Inntekt uten moms jan/feb kr            9 000,0028.02.2018
 Inntekt med moms mar/apr kr             21 000,0001.03.2018
 Inntekt uten moms mar/apr kr               9 000,0030.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 comment