(ПРИМЕЧАНИЕ: хотя этот вопрос относится к электронной таблице для решения проблемы, я также открыт для использования PHP или Javascript)
У меня есть таблица для прогнозирования моего личного финансового бюджета на следующие 3 года. Цель состоит в том, чтобы как можно больше выплатить долг с наивысшим приоритетом, пока он не будет погашен, а затем следующий приоритетный долг начинает получать все дополнительные ежемесячные средства до тех пор, пока он не будет выплачен, и так далее. Я хочу, чтобы платежи по долгам автоматически рассчитывали свои платежи, но я сталкиваюсь с циклической ошибкой ссылки, поскольку при вычислении платежа по долгу необходимо учитывать баланс задолженности, который рассчитывается с использованием платежа по долгу. Кроме того, чистый доход и, следовательно, проверяющий баланс используют долговые платежи для получения их значений, поэтому он делает еще один круговой ориентир при попытке самостоятельно рассчитать долговые платежи.
Существует ли финансовая функция, которая может рассчитать максимально возможный платеж без ссылки на остаток задолженности? Что-то, что берет стартовый баланс и процентную ставку и смотрит на сумму уже выполненных платежей? Я думаю, что могу обойти круговую ссылку Проверка баланса.
Ниже приведен образец моей таблицы. Строки доходов и расходов вводятся вручную. Долг в настоящее время также вводится вручную, но я хочу, чтобы он автоматически вычислялся, как описано выше. Чистая прибыль, Проверка баланса и Задолженность — это вычисленные строки.
---------------------------------------------------------------------------------------------
| | Jan | Feb | Mar | Apr | May | June | July | Aug | Sep | ...
---------------------------------------------------------------------------------------------
| INCOME
---------------------------------------------------------------------------------------------
| Salary 1 | 6500 | 6500 | 6500 | 6500 | 7000 | 7000 | 7000 | 7000 | 7000 | ...
---------------------------------------------------------------------------------------------
| Salary 2 | 2500 | 2500 | 2500 | 2500 | 2500 | 2500 | 2500 | 2500 | 2500 | ...
---------------------------------------------------------------------------------------------
| Misc | 500 | | | | | 500 | | | | ...
---------------------------------------------------------------------------------------------
| EXPENSES
---------------------------------------------------------------------------------------------
| Gas | 400 | 400 | 400 | 400 | 400 | 400 | 400 | 400 | 400 | ...
---------------------------------------------------------------------------------------------
| Food | 800 | 800 | 800 | 800 | 800 | 800 | 800 | 800 | 800 | ...
---------------------------------------------------------------------------------------------
| Auto Ins | 150 | | | | | | 150 | | | ...
---------------------------------------------------------------------------------------------
| Misc | 500 | 1000 | 500 | 500 | 500 | 2500 | 2500 | 500 | 500 | ...
----------------------------------------------------------------------------------------------
| DEBT
---------------------------------------------------------------------------------------------
| Auto | 500 | 500 | 500 | 500 | 500 | 500 | 500 | 500 | 500 | ...
---------------------------------------------------------------------------------------------
| Mortgage | 2500 | 2500 | 2500 | 2500 | 2500 | 2500 | 2500 | 2500 | 2500 | ...
---------------------------------------------------------------------------------------------
| Student Loan | 700 | 700 | 700 | 700 | 700 | 700 | 700 | 700 | 700 | ...
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| NET INCOME
---------------------------------------------------------------------------------------------
| | 3950 | 3100 | 3600 | 3600 | 4100 | 2600 | 1950 | 4100 | 4100 | ...
----------------------------------------------------------------------------------------------
| CHECKING BALANCE
---------------------------------------------------------------------------------------------
| | 3950 | 7050 | 10650 | 14250 | 18350 | 20950 | 22900 | 27000 | 31100 | ...
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| DEBT BALANCE
---------------------------------------------------------------------------------------------
| Auto | 14809 | 14618 | 14427 | 14235 | 14043 | 13850 | 13657 | 13463 | 13269 | ...
---------------------------------------------------------------------------------------------
| Mortgage |249571 |249141 |248710 |248278 |247844 |247409 |246974 |246537 |246100 | ...
---------------------------------------------------------------------------------------------
| Student Loan | 84541 | 84050 | 83616 | 83148 | 82677 | 82203 | 81726 | 81245 | 80761 | ...
---------------------------------------------------------------------------------------------
РЕДАКТИРОВАТЬ — 25.09.2014
Для уточнения рассмотрим таблицы выше. Вот что я пытаюсь сделать.
netIncome = SUM(INCOME) - SUM(EXPENSE) - SUM(DEBT)
checkingBalance = previousBalance + netIncome
if (debtBalance > 0 && debtBalance <= debtMinimumPayment) // last payment is equal to or less than min payment, pay it off
thePayment = debtBalance
else if (debtBalance > 0) // we owe something greater than minimum payment
if (paymentAbove = 0 && checkingBalance > debtMinimumPayment) // the debt in the row above is paid off, now we begin applying extra funds to this debt
if (checkingBalance < debtBalance) // payoff as much as we have available
thePayment = checkingBalance
else // we have enough funds to payoff this debt - do it
thePayment = debtBalance
/if
else
thePayment = debtMinimumPayment
/if
else // debt already paid off
thePayment = 0
/if
К сожалению, в приведенном выше коде sudo я не могу сослаться на «netIncome» и «debtBalance», потому что эти значения вычисляются с использованием «debtPayment», что я и пытаюсь вычислить. Моя электронная таблица не позволяет мне использовать эти ячейки и утверждает, что вы не можете ссылаться на ячейку, которая ссылается на эту ячейку. Так что я надеялся, что в Excel может быть финансовая функция, которая поможет или каким-то другим способом убрать эту кошку.
Похоже, вы имеете в виду Рамси или The Financial Fitness Pack из руководства в жизни. Я понимаю, что вы пытаетесь сделать, но хотите ли вы сначала заплатить самую низкую сумму, как предлагают эти курсы, или сначала самую высокую процентную ставку? Существуют психологические причины для того, чтобы сначала заплатить самый низкий, а затем применить этот платеж к следующему.
Поместите все минимальные платежи в таблицу для каждой строки вместе с общей задолженностью и процентами.
example
total amount extra to apply: 25
total Interest Jan Feb Mar Apr May
1253 17.3% Visa card: 25 25 25 25 25
4700 22.1% Master : 35 35 35 35 35
...
Далее вам нужно будет добавить строку, чтобы обновить сумму. Расчеты упрощены, вы можете использовать их или получить более точные расчеты.
example
jan feb mar apr
Visa card : min min min min
paid : *A* *A* *A* *A*
int : *B* *B* *B* *B*
new total : *C* *C* *C* *C*
Master card: min min min min
paid : *D* *D* *D* *D*
int : *B* *B* *B* *B*
new total : *C* *C* *C* *C*
...
*A* formula = min payment + extra payment
*B* formula = (interest/12)*total
*C* formula = total - paid + *A*
after the first column use 'new total' instead of total from above in all formulas
Теперь вы можете добавить оператор if к каждому из платных ящиков. оператор if должен быть что-то вроде
if new total < min then pay new total
когда новый итог = 0, оплата будет 0
для каждого долга после первого вы меняете формулу для быть чем-то вроде
*D* formula = min + (extra payment - *A* from above)
the min is whatever the minimum payment is for that debt.
Как оказалось, я не верю, что есть способ обойти это с помощью собственных формул в Excel или Numbers. В качестве такового я использовал Applescript, чтобы делать логику по одной строке за раз. не идеально, но это экономит мне много времени, вводя значения вручную.