Excel - DAGAR och DAGAR360 - behöver 31:e i månaden i vissa fall

Permalänk

Excel - DAGAR och DAGAR360 - behöver 31:e i månaden i vissa fall

För att göra detta på enklaste vis kommer exemplet vara påhittat för att undvika branschtermer och annat som kan vålla missförstånd, men principerna kommer att fungera exakt likadant. Även om det är ett påhittat exempel så kommer detta användas skarpt och jag vore oerhört tacksam ifall det finns hjälp att få här i forumet.

Jag driver ett företag som hyr ut olika maskiner till endast en kund. Maskinerna hyrs så länge kunden vill men betalar mig en endast gång per år.

För maskintyp ”A” kostar 300 kr/år och kunden betalar 300 kr till mig direkt.

Kunden vill nu få lista från mig om månadsvis periodisering av kostnaden per individuell maskin. Jag räknar ett år som 360 dagar och en månad som 30 dagar. Jag kan alltså inte räkna för t.ex. maskintyp A:
(300 kr / 365 dagar) * Antalet dagar i månaden

Jag behöver istället räkna för t.ex. maskintyp A:
(300 kr / 360 dagar) * 30 dagar = 25 kr i månadskostnad

Jag använder funktionen DAGAR360 för kolumn med startdatum 2018-05-01 och kolumn med slutdatum 2018-06-01 som returnerar värde 30 dagar. Jag gångrar 30 dagar med årskostnaden / 360 och får således fram att maskintyp A kostar 25 kronor per månad.

Men här kommer mitt problem med funktionen DAGAR360:
Om kunden påbörjar att hyra en till maskin av maskintyp A per datum 2018-05-30 så ska kunden debiteras för två dagar: 2018-05-30 och 2018-05-31. Gör jag på liknande sätt som ovan, med funktionen DAGAR360 om att sätta startdatum 2018-05-30 och slutdatum 2018-06-01 så får jag returnerat värde 1 dag.

Det är som datumet 2018-05-31 filtreras bort, vilket funktionsmässigt säkert är helt korrekt. Jag undrar då om finns det någon funktion i Excel som fungerar som så att om man anger en hel månad så får man 30 dagar, men om man anger endast en del av månaden att man får det faktiska antalet dagar?

Permalänk
Medlem
Visa signatur

Det är bättre att fråga och verka dum än att inte fråga och förbli det.

Permalänk
Medlem
Skrivet av ah! Bubble gum:

För att göra detta på enklaste vis kommer exemplet vara påhittat för att undvika branschtermer och annat som kan vålla missförstånd, men principerna kommer att fungera exakt likadant. Även om det är ett påhittat exempel så kommer detta användas skarpt och jag vore oerhört tacksam ifall det finns hjälp att få här i forumet.

Jag driver ett företag som hyr ut olika maskiner till endast en kund. Maskinerna hyrs så länge kunden vill men betalar mig en endast gång per år.

För maskintyp ”A” kostar 300 kr/år och kunden betalar 300 kr till mig direkt.

Kunden vill nu få lista från mig om månadsvis periodisering av kostnaden per individuell maskin. Jag räknar ett år som 360 dagar och en månad som 30 dagar. Jag kan alltså inte räkna för t.ex. maskintyp A:
(300 kr / 365 dagar) * Antalet dagar i månaden

Jag behöver istället räkna för t.ex. maskintyp A:
(300 kr / 360 dagar) * 30 dagar = 25 kr i månadskostnad

Jag använder funktionen DAGAR360 för kolumn med startdatum 2018-05-01 och kolumn med slutdatum 2018-06-01 som returnerar värde 30 dagar. Jag gångrar 30 dagar med årskostnaden / 360 och får således fram att maskintyp A kostar 25 kronor per månad.

Men här kommer mitt problem med funktionen DAGAR360:
Om kunden påbörjar att hyra en till maskin av maskintyp A per datum 2018-05-30 så ska kunden debiteras för två dagar: 2018-05-30 och 2018-05-31. Gör jag på liknande sätt som ovan, med funktionen DAGAR360 om att sätta startdatum 2018-05-30 och slutdatum 2018-06-01 så får jag returnerat värde 1 dag.

Det är som datumet 2018-05-31 filtreras bort, vilket funktionsmässigt säkert är helt korrekt. Jag undrar då om finns det någon funktion i Excel som fungerar som så att om man anger en hel månad så får man 30 dagar, men om man anger endast en del av månaden att man får det faktiska antalet dagar?

Har du även testat lägga till metod? Dvs. DAGAR360(startdatum;slutdatum;[metod])

Permalänk

Jag tyckte jag såg något i länken i första svaret som kan fungera. Provar imorgon och återkommer!

Metod har jag tyvärr inte fått att fungera på det sätt jag vill.

Permalänk
Medlem

Ok, här;
https://1drv.ms/x/s!ApO8MCFvzo0_gfUE1pzCOqixkbFu2Q

cell e3=2018-01-01, celle4=2018-02-01 osv
cell a4=namn på produkt
cell b4=årskostnad
cell c4=startdatum
cell d4=stoppdatum
cell e4=månadskostnad januari =MAX(MAX(DAYS360(MAX(E$3-1;$C4-1);MIN(F$3-1;$D4);TRUE);DAYS(MIN(F$3-1;$D4);MAX(E$3-1;$C4-1)));0)*$B4/360

Jag kör engelsk excel, så kör du svensk bör det bli
e4=MAX(MAX(DAGAR360(MAX(E$3-1;$C4-1);MIN(F$3-1;$D4);SANT);DAGAR(MIN(F$3-1;$D4);MAX(E$3-1;$C4-1)));0)*$B4/360

Permalänk
Medlem

oh crap, blir 31 dagar om hela 31-dagarsmånader, det fixar med en yttre min med 30 dvs;
engelsk
e4=MIN(30;MAX(MAX(DAYS360(MAX(E$3-1;$C4-1);MIN(F$3-1;$D4);TRUE);DAYS(MIN(F$3-1;$D4);MAX(E$3-1;$C4-1)));0))*$B4/360

svensk
e4=MIN(30;MAX(MAX(DAGAR360(MAX(E$3-1;$C4-1);MIN(F$3-1;$D4);SANT);DAGAR(MIN(F$3-1;$D4);MAX(E$3-1;$C4-1)));0))*$B4/360

Permalänk
Medlem

Jag är långt ifrån en Excelkunnig men kan du inte lägga upp det som månadskostnad och kostnad per dag för de få dagar som felar?

Skickades från m.sweclockers.com

Permalänk
Medlem

Funk, det blir fel på februari om hela februari. Snyggare att skriva en funktion i vba men sämre prestanda.

Permalänk
Medlem

Public Function DaysInMonth(dStartDate As Date, dStopDate As Date, dMonth As Date)
Dim som As Date
Dim eom As Date
Dim dMStart As Date
Dim dMStop As Date
som = DateSerial(Year(dMonth), Month(dMonth), 1)
eom = DateAdd("d", -1, DateAdd("m", 1, som))
If dStartDate <= eom And dStopDate >= som Then
dMStart = WorksheetFunction.Max(dStartDate, som)
dMStop = WorksheetFunction.Min(dStopDate, eom)
DaysInMonth = WorksheetFunction.Days360(dMStart, dMStop, True) + 1

Else
DaysInMonth = 0
End If
End Function