Selected Answer
Albert
Firstly, I'd normally use EDATE to add (or subtract) one or more months (say from the 15th of a month) e.g. if the base date is in cell B5:
=EDATE(B5,1)
where the 1 is the number of months to be added etc..
In this case, to avoid non-working days, I suggest a (sneaky) combination of EOMONTH - end of month- and the WORKDAY function.
With your base date of the 15th, EOMONTH can get the date of the end of the previous month and adding 7 to that gets the 7th,
The WORKDAY function can get a working day which is a number of working days from that. To get to the 15th (from the 7th and assuming a 2 day weekend of Saturday and Sunday) I add 6 which equates to 8 calendar days less a 2 day weekend (so 6 more working days from the 7th).
In the attached file you will see a formula using an incrementing helper column (A) which is (for E6):
=WORKDAY(EOMONTH(B$5,-1+A6)+7,6)
where the 6 in bold is that 6 working days to get to the 15th or next working day (and column C converts that date shows what day that is). That gives the 15th of each month or nearest working day with no weekend days.
If you don't want to use a helper column (e.g. repayment numbers), then ROW can be used (with a constant subtracted from it) so the alternative in H6 (e.g.) is:
=WORKDAY(EOMONTH(B$5,ROW(B6)-6)+7,6)
Note that WORKDAY also has a third argument for holidays to skip (so you can point it to cells where local holdays are listed).
If you don't use a Saturday and Sunday weekend, the function WORKDAY.INTL (workday international) allows you to specify non-working patterns (via another parameter).
Hope this works for you.