NPER spreadsheet function mystery - excel

I'm trying to use NPER to obtain the number of months required for a 100,000 loan/debt to be reduced to 80,000, when the interest rate is 4% annually and monthly repayments are 10000/12.
I know the answer is 39 months (I've computed it with another method that I trust).
Parametrizing NPER:
=nper(0.04/12,10000/12,-100000,-80000,1)
gives 236.0242766 months, not 39 months as expected.
What is wrong?

The amount borrowed (100k) and the amount still outstanding (80k) need to be of opposite sign. (Similar to before!) In Google Sheets and Excel each should return 37.42.
A little trickier for me to explain than why the loan and the repayments need to be of opposite sign, but the rationale is similar. Maybe think of a hiatus at 37 months. In reality, there is then still 80k outstanding – so this might be the loan amount for a new calculation (perhaps with a revised interest rate or larger/smaller monthly repayments). In such other calculation the 80K would logically have the same sign as the 100k has at present.
But at no time is the100k (or its remainder) outstanding while the 80k (or its remainder) is, hence for the 80k to feature in both calculations netting off between these (one plus and one minus) makes sense to me (leaving the borrowed amount as 100k in total).
Or consider that after 37 months it is though the 80k is paid back (opposite sign to borrowed) and a fresh borrowing of 80k starts.

Related

Having problems spreading expense over months with partial month calculation

I am writing a nested if statement that will calculate monthly expense based on an "Expense Frequency" option. Most of them see to be working but I have two that will not work for some reason.
The first problem is the "Fixed" option - I want this to put the whole expense rate in the first month of the expense period. For some reason it is not triggering in the first month. I feel like this might be a simple fix?
The second problem is a little more complex. It is the "Spread Amount" option. When the months are full calendar months the calculation is easy, divide total expense amount by # of months. But when I factor in partial months the calculation diverges from what I am looking for. The shorter the time duration, the larger the variance is from the total expense. When I stretch the expense over a longer period the variance shrinks. It is a pretty complex calculation (I think) and basically I want to use days out of the month for the calculation in the partial months (first and/or last) and then whole months in the middle. I have attempted this in my attached spreadsheet and I thought it might work but it isn't. Is anyone able to help me out here? I would even be satisfied with a succinct explanation of why this calculation isn't possible / doesn't make sense / cannot be done so I can explain this to my boss. I am providing a cash reward for this if it can be handled in the next three hours. Please help!! Thank you!
This is my formula
=IF($I9="Spread Amount",IF(AND($J9<=O$6,$K9>=O$5),IF(EOMONTH($J9,0)=O$6,(($M9)/(DATEDIF($J9,$K9,"m")+1)((O$6-$J9+1)/O$4)),IF(EOMONTH($K9,0)=O$6,IF(EOMONTH($K9,0)=O$6,(($M9)/(DATEDIF($J9,$K9,"m")+1)(($K9-O$5+1)/O$4))),($M9-IF(ISERROR(HLOOKUP($K9,$6:9,$XFD9,0)),HLOOKUP(EOMONTH($K9,0),$6:9,$XFD9,0),0)-IF(ISERROR(HLOOKUP($J9,$6:9,$XFD9,0)),HLOOKUP(EOMONTH($J9,0),$6:9,$XFD9,0),0))/(DATEDIF($J9,$K9,"m")))),0),IF(O$7>$K9,0,IF($I9="EOQ",IF(OR(MONTH(O$7)=3,MONTH(O$7)=6,MONTH(O$7)=9,MONTH(O$7)=12),$M9,0),IF($I9="Spread Evenly",IF(AND($J9<=O$6,$K9>=O$5),IF(EOMONTH($J9,0)=O$6,$M9*((O$6-$J9+1)/O$4),IF(EOMONTH($K9,0)=O$6,$M9*(($K9-O$5+1)/O$4),$M9)),IF($I9="Fixed",IF(AND($J9>=O$5,$J9<=O$6),$M9,0),IF($I9="Repeat Annually",IF(MONTH($J9)=MONTH(O$6),$M9,0),0))),IF($I9="Odd Month",IF(ISODD(MONTH(O$6)),$M9,0),IF($I9="Daily",IF(AND($J9<=O$6,$K9>=O$5),IF(EOMONTH($J9,0)=O$6,($M9/($K9-$J9+1))(O$6-$J9+1),IF(EOMONTH($K9,0)=O$6,($M9/($K9-$J9+1))($K9-O$5+1),($M9/($K9-$J9+1))*O$4)),0))))))*1)
This is what the spreadsheet looks like

Utilising varying amounts of cells for series of calculations

I am trying to account the value of a certain amount of grain coming in and out of storage based on the amount of fees. The grain is stored in a lump sum. I am trying to calculate the value/tonne of outcoming grain utilising a first in first out type approach in Excel. I have attempted learning Python for this task but I feel like it will be a while before my ability utilising coding (something pretty foreign to me) will be at the level where I could perform this task.
For example 400 tonnes might come in at a certain value which starts accruing storage fees in May. Then in June there might be 500 tonnes come in and start accruing fees from there. In July I might decide to take 600 tonnes out of storage (obviously meaning that 400 tonnes worth of fees from June and 200 tonnes worth of fees from July). Doing this leaves 300 tonnes of grain still in storage accruing fees, spillover which is then accounted for first for the next calculation. The size of outtakes varies between being larger or smaller than the amount on intakes.
I have tried utilising a sort of mini-grid. Which implements a series of If checks to solve the issue but it's difficult to automate when an outtake requires multiple different intakes of grain (multiple rows in the column) to then go to the next untouched cell in that column after I've taken into account the "spillover" from the previous outtake.
Is there solution here that I'm missing, mainly around taking into account the differing amounts of cells required for a series of calculations?

Excel Solver solver is messing up my optimization

I have set up an optimization problem but i must be doing something wrong and I could use your help. I have three firms: alpha, Bravo, Charlie. They each complete three tasks: Milling, Inspecting, Drilling. They each require different amounts of minutes to complete each task. Alpha requires 12 minutes to mill, 5 minutes to inspect and 10 minutes to drill. Bravo requires 10 minutes to mill, 4 to inspect, and 8 to drill. Charlie requires 8 to mill, 4 to inspect, and 16 to drill. After each firm completes all of these tasks they will earn a certain amount of profit, Alpha will earn $2.40, Bravo will earn $2.50, and Charlie will earn $3.00. All three firms have a maximum allotted time of 1200 minutes to mill, 900 to inspect, and 1440 to drill. The goal is to maximize the profit of these three firms. I have set it up so that the sums of the tasks will take away from the available time left when changed by the solver. I have also set constraints within the solver to cap each task to the allotted time allowed per task. I must be missing a vital step however because it keeps trying to just max out the allotted time for an individual firm, not taking in to account the opportunity cost of the other firms or something. Please help! (shown in photos)
Data
Solver
After executing Solver
I have changed the logic a bit different in order to take the minimum unit into consideration:
UNITS portion are the variable cells. Since the final produced unit will be the minimum of these cells, E9 formula is =MIN(B9:D9) and copied down.
TIME portion is multiplication of Unit Times and Units. So the formula of B14 is =B9*B2 and copied down & right.
I9:I11 are the earnings calculated by multiplying the unit earning with the minimum units
I12 is our total earning and is our Objective cell.
Please also be careful about the constraints since when you do not set an integer constrain, finding a solution becomes more difficult and of course our units should be integer in any case.
And also fill B9:D11 cells with some values such as 100, since otherwise iteration does not start correctly and solver ends up with a very small objective cell.
I have just had a go at this and I get a different answer as I have made the assumption that to achieve the profit the company must complete a milling process, then inspect, then drill and once all are complete then that is 1 unit for the profit - I hope that is valid.
But if not, then this layout may help you anyway. Note I have set this as a Linear model for the solver and also note the use of integer and non-negative.
It was fun anyway !

What is wrong with this NPER function usage?

I'm trying understand how NPER works. I used the following arguments:
loan amount: 145750
APR : 0.04
monthly payments : 9950/12
called the NPER with the following to obtain the number of periods in years :
=nper(0,04/12;9950/12;145750;0;1)/12
and it returned -11,51. This cannot be correct since 11,51 * 9950 = 114524,5 which is less than the original loan amount.
What has gone wrong?
NPER is effectively performing a balancing act, say borrowing a lump sum now and repaying it in relatively small installments for 'years' to come - or investing a capital amount now in exchange for a series of relatively small returns for 'years' to come. Either way money goes out and money comes in. =NPR sets the one-off (large) element against the stream of (small) elements and allows for the time value of money.
For this to work, the convention is that what goes out is negative and what comes in is positive, though does work either way around.
However, the two must be of opposite sign.

Complicated formula required to work out costs including multiple discounts

I'm looking to compute and show individual row totals and a Grand Total. I just need the formulae to put in the boxes so the calculation is automatic but the problem is the calculations are a little complicated...
I'm using data validation to select the day type. This is what I think I need:
Assign a price to the day type (either Standard day = £23 or Extended day = £26).
Apply a volume discount where appropriate. If Jack is attending all week (5 days) and the day type is the same for all (all Standard or all Extended), the total cost is £100 (or £120)
Else the total number of days needs to be added up for Jack. (Number of days for each ‘day type’) and priced up.
For his siblings after the first, as above but apply an additional discount of 15%.
The grand total then needs to show at the bottom.
Well, it is not the best of data layouts but this may serve, in L6 and copied down to L13:
=IF(OR(A6="Brother",A6="Sister"),0.85* IF(COUNTIF(B6:F6,"Standard day")=5,100,IF(COUNTIF(B6:F6,"Extended day")=5,120,COUNTIF(B6:F6,"Standard day")*23+COUNTIF(B6:F6,"Extended day")*26)), IF(COUNTIF(B6:F6,"Standard day")=5,100,IF(COUNTIF(B6:F6,"Extended day")=5,120,COUNTIF(B6:F6,"Standard day")*23+COUNTIF(B6:F6,"Extended day")*26)))
and =SUM(L1:L16) in D16.
It would be better practice not to hard code the daily rates/discount, but extracting these from C1:D2 would have increased the length of the formula further.
Note also the result is not £429.95 (you may have changed your example after doing your calculations).

Resources