Как вычислить долг в excel

Обновлено: 04.07.2024

Рассчитаем в MS EXCEL сумму процентов, которую необходимо выплатить за определенное количество периодов по кредиту. Выплата кредита производится равными ежемесячными платежами (аннуитетная схема). Процентная ставка и величина платежа - известны, начисление процентов за пользование кредитом – также ежемесячное.

Аннуитетная схема предусматривает погашение кредита периодическими равновеликими платежами (как правило, ежемесячными), которые включают как выплату основного долга, так и процентный платеж за пользование кредитом. Такой равновеликий платеж называется аннуитет. В аннуитетной схеме погашения предполагается неизменность процентной ставки по кредиту в течение всего периода выплат. В статье Аннуитет. Расчет периодического платежа в MS EXCEL. Погашение ссуды (кредита, займа) показано как рассчитать величину регулярной суммы для погашения кредита или ссуды. В данной статье научимся вычислять сумму процентов, которую необходимо выплатитьпосле заданного количества периодов (а также сумму процентов, которую необходимо выплатить в промежутке между произвольно заданными периодами). Данные расчеты можно сделать несколькими разными способами (см. файл примера ).

Вычисление суммы процентов, которую необходимо выплатитьпосле заданного количества периодов

Чтобы вычислить, сколько процентов нужно будет выплатитьс момента предоставления займа, после истечения заданного количества периодов, используйте формулу: ОБЩПЛАТ(ставка; кол_пер; нз; 1; кон_период; тип).

Задача1. Предположим, что заем 1 млн. был выдан на 5 лет. Годовая ставка = 10%. Начисление процентов и погашение займа происходит ежемесячно в конце месяца (тип=0). Определить сколько процентов будет выплачено банку по прошествии 2-х лет. Решение1. = ОБЩПЛАТ(10%/12; 5*12; 1 000 000; 1; 2*12; 0)

Задача2. Предположим, что заем 2 млн. был выдан на 3 года. Годовая ставка = 7%. Начисление процентов и погашение займа происходит ежеквартально в начале месяца (тип=1). Определить сколько процентов будет выплачено банку по прошествии 1-го года. Решение2. = ОБЩПЛАТ(7%/4; 3*4; 2 000 000; 1; 1*4; 1)

Вычисление суммы процентов, которую необходимо выплатить в промежутке между 2-мя периодами

Способ 1. Функция ОБЩПЛАТ()

Функция ОБЩПЛАТ(ставка; кол_пер; нз; нач_период; кон_период; тип) возвращает кумулятивную (нарастающим итогом) величину процентов, выплачиваемых по займу в промежутке между двумя периодами выплат ( нач_период и кон_период ).

Примечание . Английская версия: CUMIPMT(rate, nper, pv, start_period, end_period, type) returns the CUMulative Interest paid on a loan between start_period and end_period.

Аргументы функции: Ставка - обязательный аргумент. Процентная ставка за период. Кол_пер - обязательный аргумент (кол_пер – это аргумент кпер в других функциях аннуитета, например в ПЛТ() ). Общее количество периодов выплат. Нз - обязательный аргумент (нз – это аргумент пс в других функциях аннуитета, например в ПЛТ() ). Начальное значение (чаще всего - сумма кредита). Нач_период - обязательный аргумент. Номер первого периода, включенного в вычисления. Нумерация периодов выплат начинается с 1. Кон_период - обязательный аргумент. Номер последнего периода, включенного в вычисления. Тип - обязательный аргумент, определяющий время платежа. Для аннуитета постнумерандо Тип=0, для пренумерандо Тип=1.


Альтернативная формула:

Из анализа альтернативной формулы ясно, что функция ОБЩПЛАТ() может использоваться, только если БС=0, т.е. когда предполагается, что по прошествии количества периодов "Кол_пер" займ полностью погашается. Также обратите внимание, что в определении функции ОБЩПЛАТ() речь идет только о займе. Определить сумму, накопленную за счет процентов в случае срочного вклада, с помощью функции ОБЩПЛАТ() не получится (для этого см. Способ 2).

Способ 2. Функция ПРПЛТ()

Функция ПРПЛТ (ставка; период; кпер; пс; [бс]; [тип]) используется для вычисления сумм идущих на погашение процентов за ссуду используется с теми же аргументами, что и ОСПЛТ() .

Примечание . Английский вариант функции: IPMT(rate, per, nper, pv, [fv], [type]), т.е. Interest Payment – выплата процентов.

Чтобы вычислить сумму процентов, которые были выплачены в промежутке между двумя периодами, нужно использовать не одну, а несколько функций ПРПЛТ() . Например, вычислим сумму долга, выплаченную в 3-м и 4-м периоде: =ПРПЛТ(ставка; 3; кпер; пс; [бс]; [тип])+ ПРПЛТ(ставка; 4; кпер; пс; [бс]; [тип])

Чтобы вычислить сумму процентов, которая была выплачена в промежутке между двумя произвольными периодами нач_период и кон_период используйте формулу: =СУММПРОИЗВ(ПРПЛТ(ставка;СТРОКА(ДВССЫЛ(нач_период&":"&кон_период)); кпер; пс; [бс]; [тип]))

Кто как, а я считаю кредиты злом. Особенно потребительские. Кредиты для бизнеса - другое дело, а для обычных людей мышеловка"деньги за 15 минут, нужен только паспорт" срабатывает безотказно, предлагая удовольствие здесь и сейчас, а расплату за него когда-нибудь потом. И главная проблема, по-моему, даже не в грабительских процентах или в том, что это "потом" все равно когда-нибудь наступит. Кредит убивает мотивацию к росту. Зачем напрягаться, учиться, развиваться, искать дополнительные источники дохода, если можно тупо зайти в ближайший банк и там тебе за полчаса оформят кредит на кабальных условиях, попутно грамотно разведя на страхование и прочие допы?

Так что очень надеюсь, что изложенный ниже материал вам не пригодится.

Но если уж случится так, что вам или вашим близким придется влезть в это дело, то неплохо бы перед походом в банк хотя бы ориентировочно прикинуть суммы выплат по кредиту, переплату, сроки и т.д. "Помассажировать числа" заранее, как я это называю :) Microsoft Excel может сильно помочь в этом вопросе.

Вариант 1. Простой кредитный калькулятор в Excel

Для быстрой прикидки кредитный калькулятор в Excel можно сделать за пару минут с помощью всего одной функции и пары простых формул. Для расчета ежемесячной выплаты по аннуитетному кредиту (т.е. кредиту, где выплаты производятся равными суммами - таких сейчас большинство) в Excel есть специальная функция ПЛТ (PMT) из категории Финансовые (Financial) . Выделяем ячейку, где хотим получить результат, жмем на кнопку fx в строке формул, находим функцию ПЛТ в списке и жмем ОК. В следующем окне нужно будет ввести аргументы для расчета:

Расчет кредита в Excel функцией ПЛТ

  • Ставка - процентная ставка по кредиту в пересчете на период выплаты, т.е. на месяцы. Если годовая ставка 12%, то на один месяц должно приходиться по 1% соответственно.
  • Кпер - количество периодов, т.е. срок кредита в месяцах.
  • Пс - начальный баланс, т.е. сумма кредита.
  • Бс - конечный баланс, т.е. баланс с которым мы должны по идее прийти к концу срока. Очевидно =0, т.е. никто никому ничего не должен.
  • Тип - способ учета ежемесячных выплат. Если равен 1, то выплаты учитываются на начало месяца, если равен 0, то на конец. У нас в России абсолютное большинство банков работает по второму варианту, поэтому вводим 0.

Также полезно будет прикинуть общий объем выплат и переплату, т.е. ту сумму, которую мы отдаем банку за временно использование его денег. Это можно сделать с помощью простых формул:

Вычисление переплаты по кредиту

Вариант 2. Добавляем детализацию

Если хочется более детализированного расчета, то можно воспользоваться еще двумя полезными финансовыми функциями Excel - ОСПЛТ (PPMT) и ПРПЛТ (IPMT) . Первая из них вычисляет ту часть очередного платежа, которая приходится на выплату самого кредита (тела кредита), а вторая может посчитать ту часть, которая придется на проценты банку. Добавим к нашему предыдущему примеру небольшую шапку таблицы с подробным расчетом и номера периодов (месяцев):

Подробный расчет выплат по кредиту

Функция ОСПЛТ (PPMT) в ячейке B17 вводится по аналогии с ПЛТ в предыдущем примере:

Расчет выплаты тела кредита

Добавился только параметр Период с номером текущего месяца (выплаты) и закрепление знаком $ некоторых ссылок, т.к. впоследствии мы эту формулу будем копировать вниз. Функция ПРПЛТ (IPMT) для вычисления процентной части вводится аналогично. Осталось скопировать введенные формулы вниз до последнего периода кредита и добавить столбцы с простыми формулами для вычисления общей суммы ежемесячных выплат (она постоянна и равна вычисленной выше в ячейке C7) и, ради интереса, оставшейся сумме долга:

Подробный кредитный калькулятор

Эта формула проверяет с помощью функции ЕСЛИ (IF) достигли мы последнего периода или нет, и выводит пустую текстовую строку ("") в том случае, если достигли, либо номер следующего периода. При копировании такой формулы вниз на большое количество строк мы получим номера периодов как раз до нужного предела (срока кредита). В остальных ячейках этой строки можно использовать похожую конструкцию с проверкой на присутствие номера периода:

=ЕСЛИ(A18<>""; текущая формула; "")

Т.е. если номер периода не пустой, то мы вычисляем сумму выплат с помощью наших формул с ПРПЛТ и ОСПЛТ. Если же номера нет, то выводим пустую текстовую строку:

credit6.jpg

Вариант 3. Досрочное погашение с уменьшением срока или выплаты

Реализованный в предыдущем варианте калькулятор неплох, но не учитывает один важный момент: в реальной жизни вы, скорее всего, будете вносить дополнительные платежи для досрочного погашения при удобной возможности. Для реализации этого можно добавить в нашу модель столбец с дополнительными выплатами, которые будут уменьшать остаток. Однако, большинство банков в подобных случаях предлагают на выбор: сокращать либо сумму ежемесячной выплаты, либо срок. Каждый такой сценарий для наглядности лучше посчитать отдельно.

В случае уменьшения срока придется дополнительно с помощью функции ЕСЛИ (IF) проверять - не достигли мы нулевого баланса раньше срока:

credit8.jpg

А в случае уменьшения выплаты - заново пересчитывать ежемесячный взнос начиная со следующего после досрочной выплаты периода:

Кредитный калькулятор с уменьшением выплаты

Вариант 4. Кредитный калькулятор с нерегулярными выплатами

Существуют варианты кредитов, где клиент может платить нерегулярно, в любые произвольные даты внося любые имеющиеся суммы. Процентная ставка по таким кредитам обычно выше, но свободы выходит больше. Можно даже взять в банке еще денег в дополнение к имеющемуся кредиту. Для расчета по такой модели придется рассчитывать проценты и остаток с точностью не до месяца, а до дня:

Рассчитаем в MS EXCEL остаток основной суммы долга, который требуется погасить после заданного количества периодов. Выплата кредита производится равными ежемесячными платежами (аннуитетная схема). Процентная ставка и величина платежа - известны, начисление процентов за пользование кредитом – также ежемесячное.

Аннуитетная схема предусматривает погашение кредита периодическими равновеликими платежами (как правило, ежемесячными), которые включают как выплату основного долга, так и процентный платеж за пользование кредитом. Такой равновеликий платеж называется аннуитет. В аннуитетной схеме погашения предполагается неизменность процентной ставки по кредиту в течение всего периода выплат. В статье Аннуитет. Расчет периодического платежа в MS EXCEL. Погашение ссуды (кредита, займа) показано как рассчитать величину регулярной суммы для погашения кредита или ссуды. В данной статье научимся вычислять остаток основной суммы долга, который требуется погасить после заданного количества периодов (а также сумму основного долга, которая была выплачена в промежутке между двумя периодами).

Вычисление остатка суммы основного долга (при БС=0, тип=0)

Пусть был взят кредит в размере 100 000руб. на 10 лет под ставку 9%. Кредит должен гаситься ежемесячными равными платежами (в конце периода). Требуется вычислить сумму основного долга, которая будет выплачена в первом месяце третьего года выплат. Решение простое – используйте функцию ОСПЛТ(): =ОСПЛТ(9%/12;25;10*12;100000) Ставка за период (ставка): 9%/12 Номер периода (первый месяц третьего года выплат): 25=2*12+1 Всего периодов (кпер): 10*12 Кредит: 100000 Ответ: Сумма основного долга, которая будет выплачена в первом месяце третьего года выплат: -618,26руб.

Теперь выполним те же вычисления, только осмысленно, т.е. понимая, суть расчета.

  1. Вычислим ежемесячный платеж, используя формулу Приведенной стоимости . Обозначим сумму кредита как ПС, ежемесячный платеж как ПЛТ: ПС=ПМТ*(1-(1+ставка)^-кпер)/ставка. Отсюда, ПМТ=ПС* ставка /(1-(1+ставка)^-кпер)=1266,76 (правильность расчета можно проверить с помощью ПЛТ() – см. файл примера, лист Задача ). ПЛТ() вернет -1266,76. Знак минус указывает на различные направления денежных потоков + (из банка сумма кредита), - (в банк ежемесячные платежи). Формула приведенной стоимости является следствием того, что сумма долей ежемесячных платежей, идущих на погашение основной суммы долга, должна быть равна сумме кредита.
    1. Доля платежа, которая идет на погашение основной суммы долга в 1-й период =ПМТ-ПС*ставка, а с учетом знаков =-ПМТ-ПС*ставка (чтобы сумма долей была того же знака, что и ПС). Обозначим эту долю как ПС1. ПС*ставка – это сумма процентов, уплаченная за пользование кредитом в первый период.
    2. Доля платежа, которая идет на погашение основной суммы долга в 2-й период =-ПМТ-(ПС-ПС1)*ставка=-ПМТ-(ПС +ПМТ+ПС*ставка) *ставка=(-ПМТ-ПС*ставка)*(1+ставка)=ПС1*(1+ставка). Обозначим эту долю как ПС2. ПС-ПС1 – это остаток суммы долга в конце второго периода.
    3. Доля платежа, которая идет на погашение основной суммы долга в 3-й период =-ПМТ-(ПС-ПС1-ПС2)*ставка=-ПМТ-(ПС-ПС1)*ставка+ПС2*ставка =ПС2+ПС2*ставка= ПС2*(1+ставка) =ПС1*(1+ставка)^2
    4. Очевидно, что доля платежа, которая идет на погашение основной суммы долга в последний период (кпер)= ПС1*(1+ставка)^ кпер =-(ПМТ+ПС*ставка) *(1+ставка)^ кпер
    5. Чтобы погасить кредит полностью, необходимо, чтобы сумма долей, идущих на погашение кредита, была равна сумме кредита, т.е. =-(ПМТ+ПС*ставка)*(1-(1+ставка)^ кпер)/ставка=ПС. Эта формула получена как сумма членов геометрической прогрессии: первый член =-(ПМТ+ПС*ставка), знаменатель =(1+ставка).
    6. Решая нехитрое уравнение, полученное на предыдущем шаге, получим, что ПС=ПМТ*(1-(1+ставка)^-кпер)/ставка. Это и есть формула приведенной стоимости (при БС=0 и платежах, осуществляемых в конце периода (тип=0)).

    Как видим, сумма совпадает результатом ОСПЛТ() , вычисленную ранее (с точностью до знака).

    Вычисление суммы основного долга, которая была выплачена в промежутке между двумя периодами

    Данные расчеты можно сделать несколькими разными способами (см. файл примера ).

    Способ 1. Функция ОБЩДОХОД() Функция ОБЩДОХОД(ставка; кол_пер; нз; нач_период; кон_период; тип) возвращает кумулятивную (нарастающим итогом) сумму, выплачиваемую в погашение основной суммы займа в промежутке между двумя периодами ( нач_период и кон_период ).

    Примечание . Английская версия функции: CUMPRINC(rate, nper, pv, start_period, end_period, type) returns the CUMulative PRincipal paid for an investment period with a Constant interest rate.

    Аргументы функции: Ставка - обязательный аргумент. Процентная ставка за период. Кол_пер - обязательный аргумент (кол_пер – это аргумент кпер в других функциях аннуитета, например в ПЛТ()). Общее количество периодов выплат. Нз - обязательный аргумент (нз – это аргумент пс в других функциях аннуитета, например в ПЛТ()). Начальное значение (чаще всего - сумма кредита). Нач_период - обязательный аргумент. Номер первого периода, включенного в вычисления. Нумерация периодов выплат начинается с 1. Кон_период - обязательный аргумент. Номер последнего периода, включенного в вычисления. Тип - обязательный аргумент, определяющий время платежа. Для аннуитета постнумерандо Тип=0, для пренумерандо Тип=1.


    Альтернативная формула

    Из анализа альтернативной формулы ясно, что функция ОБЩДОХОД() может использоваться, только если БС=0, т.е. когда предполагается, что по прошествии количества периодов "Кол_пер" займ полностью погашается. Это ограничение можно обойти, записав выражение =ОБЩДОХОД(ставка; кол_пер; нз+БС; нач_период; кон_период; тип)+(нач_период=1)*тип*БС* ставка /(1+ ставка)

    Способ 2. Функция ОСПЛТ()

    Функция ОСПЛТ(ставка; период; кпер; пс; [бс]; [тип]) используется для вычисления регулярных сумм идущих на погашение основной суммы долга практически с теми же аргументами, что и ПЛТ() .

    Примечание . Английский вариант функции: PPMT(rate, per, nper, pv, [fv], [type]), т.е. Principal Payment – платеж основной части долга.

    Чтобы вычислить сумму основного долга, которая была выплачена в промежутке между двумя периодами, нужно использовать не одну, а несколько функций ОСПЛТ() . Например, вычислим сумму долга, выплаченную в 3-м и 4-м периоде: =ОСПЛТ(ставка; 3; кпер; пс; [бс]; [тип])+ОСПЛТ(ставка; 4; кпер; пс; [бс]; [тип])

    Чтобы вычислить сумму основного долга, которая была выплачена в промежутке между двумя произвольными периодами нач_период и кон_период используйте формулу: =СУММПРОИЗВ(ОСПЛТ(ставка;СТРОКА(ДВССЫЛ(нач_период&":"&кон_период)); кпер; пс; [бс]; [тип]))

    Способ 3. Вычисление суммы основного долга через Будущую стоимость

    Функция БС(ставка; кпер; плт; [пс]; [тип]) возвращает будущую стоимость инвестиции на основе периодических постоянных (равных по величине сумм) платежей и постоянной процентной ставки. Подробнее см. статью Аннуитет. Определяем в MS EXCEL Будущую Стоимость . Чтобы вычислить сумму основного долга, которая была выплачена в промежутке между двумя произвольными периодами нач_период и кон_период используйте формулу:

    =- БС(ставка; кон_период; плт; [пс]; [тип]) /(1+тип *ставка) + БС(ставка; нач_период-1; плт; [пс]; [тип]) /ЕСЛИ(нач_период =1;1; 1+тип *ставка)

    В файле примера также приведена эквивалентная формула без использования функции БС() .

    Способ 4. Вычисление суммы основного долга через Приведенную стоимость

    Функция ПС(ставка; кпер; плт; [бс]; [тип]) возвращает приведенную (к текущему моменту) стоимость инвестиций. Подробнее см. статью Аннуитет. Определяем в MS EXCEL Приведенную (Текущую) стоимость . Чтобы вычислить сумму основного долга, которая была выплачена в промежутке между двумя произвольными периодами нач_период и кон_период используйте формулу:

    =ПС(ставка; кпер-кон_период; плт; [бс]; [тип]) /(1+тип *ставка) - ПС(ставка; кпер-нач_период+1; плт; [пс]; [тип]) /ЕСЛИ(нач_период =1;1; 1+тип *ставка)

    В файле примера также приведена эквивалентная формула без использования функции ПС() . Чтобы убедиться в идентичности вышеуказанных способов, в файле примера приведен график платежей, рассчитанный на основе функции ОСПЛТ() .

    adjust0.jpg

    Не очень частый, но и не экзотический случай. На моих тренингах такой вопрос задавали не один и не два раза :) Суть в том, что мы имеем конечный набор каких-то чисел, из которых надо выбрать те, что дадут в сумме заданное значение.

    В реальной жизни эта задача может выглядеть по-разному.

    • Например, мы выгрузили из интернет-банка все платежи, которые поступили на наш счет за последний месяц. Один из клиентов разбивает сумму своего платежа на несколько отдельных счетов и платит частями. Мы знаем общую сумму оплаты и количество счетов, но не знаем их сумм. Надо подобрать те суммы в истории платежей, которые дадут в общем заданное значение.
    • У нас есть несколько рулонов стали (линолеума, бумаги. ), из которых надо подобрать под заказ те, что дадут заданную длину.
    • Блэкджек или в народе "очко". Надо набрать карты суммарной стоимостью максимально близкой к 21 баллу, но не превысить этот порог.

    В некоторых случаях может быть известна разрешенная погрешность допуска. Она может быть как нулевой (в случае подбора счетов), так и ненулевой (в случае подбора рулонов), или ограниченной снизу или сверху (в случае блэкджека).

    Давайте рассмотрим несколько способов решения такой задачи в Excel.

    Способ 1. Надстройка Поиск решения (Solver)

    Эта надстройка входит в стандартный набор пакета Microsoft Office вместе с Excel и предназначена, в общем случае, для решения линейных и нелинейных задач оптимизации при наличии списка ограничений. Чтобы ее подключить, необходимо:

    • в Excel 2007 и новее зайти Файл - Параметры Excel - Надстройки - Перейти (File - Excel Options - Add-ins - Go)
    • в Excel 2003 и старше - открыть меню Сервис - Надстройки (Tools - Add-ins)

    и установить соответствующий флажок. Тогда на вкладке или в меню Данные (Data) появится нужная нам команда.

    Чтобы использовать надстройку Поиск решения для нашей задачи необходимо будет слегка модернизировать наш пример, добавив к списку подбираемых сумм несколько вспомогательных ячеек и формул:

    adjust1.jpg

    • Диапазон A1:A20 содержит наши числа, из которых мы будем выбирать нужные, чтобы "вписаться" в заданную сумму.
    • Диапазон В1:B20 будет своего рода набором переключателей, т.е. будет содержать нули или единички, показывая, отбираем мы данное число в выборку или нет.
    • В ячейке E2 стоит обычная автосумма всех единичек по столбцу B, подсчитывающая кол-во выбранных чисел.
    • В ячейке E3 с помощью функции СУММПРОИЗВ (SUMPRODUCT) считается сумма попарных произведений ячеек из столбцов А и B (то есть A1*B1+A2*B2+A3*B3+. ). Фактически, здесь подсчитывается сумма чисел из столбца А, отобранных единичками из столбца В.
    • В розовую ячейку E4 пользователь вводит желаемую сумму для подбора.
    • В ячейке E5 вычисляется абсолютное по модулю значение погрешности подбора с целью ее будущей минимизации.
    • Все желтых ячейках Е8:E17 хотелось бы получить список отобранных чисел, т.е. тех чисел из столбца А, напротив которых в столбце В есть единички. Для этого необходимо выделить сразу все (!) желтые ячейки и в них ввести вот такую формулу массива:

    =ЕСЛИОШИБКА(ИНДЕКС($A$1:$A$20;НАИМЕНЬШИЙ(ЕСЛИ(B1:B20=1;СТРОКА(B1:B20);"");СТРОКА()-СТРОКА($E$8)+1));"")

    =IFERROR(INDEX($A$1:$A$20;SMALL(IF(B1:B20=1;ROW(B1:B20);"");ROW()-ROW($E$8)+1));"")

    После ввода формулы ее необходимо ввести не как обычную формулу, а как формулу массива, т.е. нажать не Enter, а Ctrl+Shift+Enter. Похожая формула используется в примере о ВПР, выдающей сразу все найденные значения (а не только первое).

    Теперь перейдем на вкладку (или в меню) Данные и запустим инструмент Поиск решения (Data - Solver):

    adjust4.jpg

    В открывшемся окне необходимо:

    • Задать как целевую функцию (Target Cell) - ячейку вычисления погрешности подбора E5. Чуть ниже выбрать опцию - Минимум, т.к. мы хотим подобрать числа под заданную сумму с минимальной (а лучше даже нулевой) погрешностью.
    • В качестве изменяемых ячеек переменных (Changing cells) задать диапазон столбца переключателей B1:B20.
    • С помощью кнопки Добавить (Add) создать дополнительное условие на то, что ячейки диапазона B1:B20 должны быть бинарными (т.е. содержать только 0 или 1):

    После ввода всех параметров и ограничений запускаем процесс подбора кнопкой Найти решение (Solve). Процесс подбора занимает от нескольких секунд до нескольких минут (в тяжелых случаях) и заканчивается появлением следующего окна:

    adjust3.jpg

    Теперь можно либо оставить найденное решение подбора (Сохранить найденное решение), либо откатиться к прежним значениям (Восстановить исходные значения).

    Необходимо отметить, что для такого класса задач существует не одно, а целое множество решений, особенно, если не приравнивать жестко погрешность к нулю. Поэтому запуск Поиска решения с разными начальными данными (т.е. разными комбинациями 0 и 1 в столбце В) может приводить к разным наборам чисел в выборках в пределах заданных ограничений. Так что имеет смысл прогнать эту процедуру несколько раз, произвольно изменяя переключатели в столбце В.

    Найденные комбинации можно сохранять виде сценариев (кнопка Сохранить сценарий), чтобы вернуться к нем позднее с помощью команды Данные - Анализ "что-если" - Диспетчер сценариев (Data - What-If Analysis - Scenario Manager):

    adjust7.jpg

    И весьма удобно будет вывести все найденные решения, сохраненные в виде сценариев, в одной сравнительной таблице с помощью кнопки Отчет (Summary):

    adjust8.jpg

    Способ 2. Макрос подбора

    В этом способе всю работу делает макрос, который тупо перебирает случайные комбинации чисел, пока не наткнется на нужную сумму в пределах разрешенной погрешности. Добавлять столбец с нулями и единичками и формулы в этом случае не нужно.

    adjust9.jpg

    Для использования макроса нажмите сочетание Alt+F11, в открывшемся окне редактора Visual Basic вставьте новый модуль через меню Insert - Module и скопируйте туда этот код:

    Аналогично первому способу, запуская макрос несколько раз, можно получать разные наборы подходящих чисел.

    Читайте также: