VBA kode: Summere omsetning etter dato

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:

Alle deres dataproblemer er interessante for oss.
Vi ønsker å forstå deres problemstilling og løse det så enkelt og raskt som mulig..

OrdreID

201810000

201810001

201810002

201810003

201810004

201810005

Kunde

Kunde 1

Kunde 2

Kunde 3

Kunde 4

Kunde 5

Kunde 6

Ordredatoen

02.01.2018

02.02.2018

08.04.2018

12.03.2018

22.06.2018

12.08.2018

Moms

0%

25%

25%

0%

0%

25%

Totalt

kr 1 000,00

kr 2 000,00

kr 4 000,00

kr 4 000,00

kr 5 000,00

kr 6 000,00

Med moms

kr 1 000,00

kr 2 500,00

kr 3 500,00

kr 5 000,00

kr 5 00,00

kr 7 500,00

Moms kr

kr –

kr 500,00

kr 1 000,00

kr –

kr –

kr 1 500,00

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

nntekt Uten moms jan/feb

nntekt med moms mar/apr

nntekt Uten moms mar/apr

nntekt med moms mai/juni

nntekt Uten moms mai/juni

 

kr 6 000,00

kr 9 000,00

kr 21 000,00

kr 9 000,00

kr –

kr –

 

01.01.2018

28.02.18

01.03.18

30.04.18

01.05.18

 

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[:]

TJENESTER

Personlig service uten mellomledd av selgere og møtedeltakere gir dere direkte tilgang til en teknisk person som kan det han prater om.​

DATAPROBLEM

Alle deres dataproblemer er interessante for oss.
Vi ønsker å forstå deres problemstilling og løse det så enkelt og raskt som mulig..

SKREDDERSYDD

Sett opp funksjonene dere ønsker i et datasystem og vi lager det til dere skreddersydd.
Vi programmerer og setter sammen løsninger slik at det passer perfekt inn i deres bedrift og den måten dere jobber på.

HJEMMESIDER

Vi tilpasser hjemmesiden etter behov og budsjett. Det kan gjøres veldig mye uten et stort budsjett. Begynn enkelt og pluss eventuelt på funksjoner etter hvert.

VBA PROGRAMMERING

Vi utvikler programmer for MS Office-pakken som kan hjelpe dere å raskere utføre ønskede oppgaver.

DOTNET og PHP

Vi utvikler plattform-uavhengige løsninger for bruk på PC, mobil, iPad eller Android.

KURS

Bedriftsinterne kurs i Excel, Word, PowerPoint og Access. Vi løfter de ansattes datakunnskaper.

Blog

MICROSOFT ACCESS

Vi er eksperter med over 30 års erfaring med Microsoft Access-utvikling.

Microsoft PowerPoint

Vi bygger din presentasjon i henhold til merkevareidentiteten til firmaet ditt.

Microsoft Word

Gjør malene dine fleksible ved å legge til og konfigurere innholdskontroller.

Microsoft Excel

Vi programmerer komplekse løsninger i Excel. Data hentes fra databaser og skjemaer samarbeider med brukeren.

Blog