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.
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.
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.