usto-excel

блог об Excel и не только

Html

Показаны сообщения с ярлыком Функции Excel. Показать все сообщения

Создание графика платежей по кредиту с функцией ПЛТ()

Комментариев нет :


Клиент берёт в банке кредит на сумму $10000 на 12 месяцев под 24% годовых. На основе этих данных необходимо создать график платежей по кредиту, т.е. рассчитать какую сумму ежемесячно нужно будет платить клиенту, чтобы к концу срока полностью погасить основную сумму кредита плюс проценты.

Прежде всего, занесём в MS Excel вводные данные по кредиту, а именно:

  • ПС - приведённая (текущая) стоимость, в нашем случае сумма кредита;
  • Кпер - количество периодов, в течении которых нужно производить выплаты, т.е. если по условиям кредита клиент обязан ежемесячно погашать кредит, то количество периодов платежа равняется 12-ти;
  • Ставка - процентная ставка под которую выдаётся кредит.

Далее, создадим следующего вида таблицу погашений по кредиту:



Рассчитываем ежемесячную сумму платежей

Теперь, в ячейке E7 введём формулу, для расчёта суммы ежемесячного платежа по кредиту, с помощью функции ПЛТ(), имеющий следующий синтаксис:
=ПЛТ(ставка; кпер; пс; [бс]; [тип])
Три первых аргумента (ставка, кпер, пс) у нас уже имеются.
Четвёртый аргумент "бс" означает будущую стоимость, которой мы хотим достичь после внесения последнего платежа. Данный аргумент является необязательным и принимается равным нулю, если не указывать его значение.
Пятый аргумент "тип" означает тип платежа, а именно производится ли платёж в начале периода (1) или же в конце периода (0). Данный аргумент также является необязательным и принимается равным нулю, если не указывать его значение.

Поскольку в ячейке С4 нами указана годовая процентная ставка, а в формуле, рассчитывается сумма платежа по каждому периоду равному одному месяцу, нужно разделить процентную ставку на количество периодов.
=ПЛТ(C4/C3;C3;C2)
Так как сумма платежа для каждого периода будет одинаковой, используем постоянные ссылки на ячейки, что позволит нам протянуть её вниз и получить одинаковую сумму платежа для всех периодов.



Как видим у нас тут две проблемы:

  1. В связи с тем, что понятие платежа подразумевает денежную сумму, при первом вводе в ячейку функции ПЛТ() MS Excel автоматически меняет её формат на денежный. 
  2. И так как платёж означает уменьшение оставшихся у клиента денежных средств результат функции ПЛТ() отображается со знаком минус.

Для решения первой проблемы просто выделим ячейки с формулами и изменим их формат на числовой. А чтобы преобразовать отрицательный результат формулы в положительный подкорректируем формулу с помощью функции ABS(), которая возвращает абсолютную величину числа.



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

Рассчитываем сумму ежемесячных платежей по процентам

Для расчёта ежемесячных платежей по процентам используем функцию ПРПЛТ(), синтаксис которой выглядит следующим образом:
=ПРПЛТ(ставка; период; кпер; пс; [бс]; [тип])
где период - это порядковый номер периода платежа, который мы будем брать из столбца В, используя относительную ссылку:
=ПРПЛТ($C$3/$C$2;B6;$C$2;$C$1)

Меняем формат ячейки на числовой и корректируем формулу, для отображения абсолютной величины суммы платежа, используя функцию ABS().

Рассчитываем сумму ежемесячных платежей по основной сумме долга

Для расчета ежемесячных платежей по основной сумме долга воспользуемся функцией ОСПЛТ(), синтаксис которой абсолютно идентичен, синтаксису функции ПРПЛТ():
=ОСПЛТ(ставка; период; кпер; пс; [бс]; [тип])
Опять же, изменим формат ячейки на числовой и добавим функцию ABS():



Если мы всё сделали правильно, то сумма платежей по процентам и основной сумме по каждому периоду будет равняться сумме общих платежей по данному периоду.


Рассчитываем остаточную сумму кредита

Для расчёта остаточной суммы кредита в ячейку F6, введём простую формулу, которая отнимает от приведённой стоимости кредита сумму платежа основной суммы для первого периода , т.е. в данном случае от ячейки С1 отнимает значение ячейки D6:


Теперь в ячейке F2 введём формулу, которая от остаточной стоимости кредита будет отнимать сумму платежей по основной сумме для каждого следующего периода, и протянем данную формулу вниз.



Таким образом, за 12 месяцев клиент должен будет заплатить $11 347,15 из которых $1 347,15 будут составлять проценты по кредиту.


Превращение сквозных формул в MS Excel в саморасширяющиеся

Комментариев нет :

Файл примера


В прошлой статье мы узнали о том как создавать сквозные формулы для суммирования показателей продаж сразу из нескольких листов книги. Эта формула суммирует значения ячеек "С8" на листах "Регион 1", "Регион 2" и на всех листах находящихся между ними. То есть "Регион 1" выступает в качестве верхней границы формулы а "Регион 2" в качестве нижней границы.

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


Мы можем поменять местами листы "Регион 4" и "Регион 3" и тогда значения из листа "Регион 4" будут учитываться нашей формулой, то есть лист "Регион 4" окажется в пределах действия формулы.


Но что делать если начальство требует, чтобы регионы в книге располагались по порядку их открытия. Или же если Вы создаёте книгу с формулами для использования другими сотрудниками и не можете надеяться на то, что они не забудут поменять местами листы?

Чтобы решить данную проблему:
      1. Создаём пустой лист с именем "Конец" ну или любым другим понятным Вам именем;
      2. Изменяем формулу и в качестве её нижней границы указываем созданный нами лист;
      3. Кликнув правой кнопкой мышки на названии листа выбираем команду "Скрыть".


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

Создание сквозных (3D) формул в MS Excel

Комментариев нет :

Файл примера

Имеется книга, состоящая из нескольких листов, в каждом из которых приведены показатели продаж по каждому отдельному региону. Причём форма отчёта в каждом листе является стандартной, и состоит из одинакового числа строк и столбцов


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


Очень часто мне приходится наблюдать как мои коллеги в подобной ситуации ставят знак "=",  добавляют ссылку к первому листу, ставят знак "+", добавляют ссылку ко второму листу, и так далее. А теперь представьте, что в этой книге не 3 а 10, 50 или 100 листов с данными, которые нужно просуммировать.


В MS Excel данную задачу можно легко решить используя сквозные формулы (в русскоязычных интернет-ресурсах посвящённых MS Excel такие формулы называют 3D-формулами, но мне больше нравиться называть их сквозными, поскольку данное название лучше отражает их суть).
Для создания сквозной формулы в ячейке "C8" на итоговой таблице пишем "=СУММ(", выбираем первый подлежащий суммированию лист и удерживая нажатой клавишу SHIFT выбираем последний лист. Далее протягиваем формулу вправо и вниз.






Получение всех значений строки с помощью функций ИНДЕКС()+ПОИСКПОЗ()

Комментариев нет :

ЗАДАЧА

Дана таблица (файл книги с примером) следующего вида:



В таблице указаны Код товара и цена за товар у каждого из трёх поставщиков.
Требуется создать формулу для нахождения минимальной из предложенных поставщиками цен, за любой выбранный пользователем товар.


РЕШЕНИЕ

Само по себе нахождение минимального значения из диапазона данных не представляет сложности. Например, нижеследующая формула вернёт нам минимальное значение из списка:
=МИН(121;289;165)
Но как получить этот список значений из для любого, выбранного пользователем товара?
Для этого воспользуемся связкой функций ИНДЕКС()+ПОИСПОЗ().

Чтобы понять как работает эта формула, выделем её в строке формул и будем вычислять по частям с помощью клавиши F9.
Прежде всего, обратите внимание на следующую часть формулы:
ПОИСКПОЗ(G3;B3:B10;0)
Функция ПОИСКПОЗ() находит позицию указанного пользователем товара (ячейка G3) в столбце "Код товара" в основной таблице (диапазон B3:B10). Выделим данную часть формулы и нажмём F9:

Формула вычислила позицию товара в столбце "Код товара". То есть товар с кодом "А6" находится в шестой строке столбца "Код товара".
Перейдём к следующей части формулы:
ИНДЕКС(C3:E10;6;0)
В этой части скрыт наш главный секрет. Дело в том, что функция ИНДЕКС() возвращает значения находящиеся на пересечении указанных строк и столбцов. Так если бы вместо нуля мы указали цифру 1, то формула вернула бы нам значение находящееся на пересечении 6 строки (товар А6) и 1 столбца (Поставщик1) в диапазоне C3:E10. Но так как мы не указываем какой именно столбец нам нужен, то функция ИНДЕКС() возвращает нам значения всех ячеек указанной строки.



Генерирование уникальных значений с помощью функции СЛУЧМЕЖДУ()

Комментариев нет :


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

К счастью в Excel существует функция позволяющая облегчить данный процесс и в несколько нажатий заполнить случайными данными диапазон любого размера. Это функция СЛУЧМЕЖДУ(). Синтаксис функции довольно прост =СЛУЧМЕЖДУ(нижн_граница; верхн_граница). Т.е. функция выдаёт любое случайное число равное, либо находящееся  между указанными нижней и верхней границами числового диапазона.

Чтобы заполнить ячейки случайно сгенерированными данными выделяем нужный диапазон и пишем формулу: =СЛУЧМЕЖДУ(1;1000).

Теперь если нажать ENTER то мы введём формулу лишь в первую ячейку выделенного диапазона. Но если вместо этого нажать комбинацию клавиш CTRL+ENTER то формула будет введена во все выделенные ячейки.




С помощью этой функции можно получать не только набор случайных цифр, но и букв. К примеру, если использовать формулу =СИМВОЛ(СЛУЧМЕЖДУ(КОДСИМВ(“A”);КОДСИМВ(“Z”))) то можно получить набор случайных буквенных символов.

Используя связку из случайных букв и цифр можно генерировать уникальные номера либо пароли.

Однако, функция СЛУЧМЕЖДУ() пересчитывается при каждом изменении листа. То есть, каждый раз при вводе или редактировании значений в других ячейках, все формулы содержащиеся на листе пересчитываются и те ячейки, которые содержат формулы с функцией СЛУЧМЕЖДУ() генерируют новые случайные значения.
И чтобы сохранить сгенерированные уникальные значения нужно скопировать эти данные и с помощью последовательности команд Специальная вставка > Значения вставить их обратно в те же ячейки.

Функция-фильтр. Суммируем данные по многочисленным условиям с помощью функции СУММЕСЛИМН()

Комментариев нет :


Дана таблица с данными продаж по 2 категориям продуктов, с разбивкой по месяцам и регионам.  На основе имеющихся данных нужно узнать:
  • общую сумму продаж за Январь;
  • общую сумму продаж Продукта №1 за Февраль;
  • общую сумму продаж более 5000 сомони Продукта №1 в Согде.

Большинство пользователей Excel для решения подобных задач пользуются Фильтром. Действительно, фильтрами удобно пользоваться, когда нужно отделить данные по одному-двум условиям. Однако, когда параметров по которым нужно отделить данные становится слишком много, пользоваться фильтрами становится неудобно и к тому же возрастает риск допущения ошибок.

Куда удобнее решать такие задачи (с несколькими условиями) с помощью функции СУММЕСЛИМН. Синтаксис функции довольно прост и понятен: СУММЕСЛИМН(диапазон_суммирования, диапазон_условия1, условие1, [диапазон_условия2, условие2], ...). Где диапазон_суммирования это диапазон, данные из которого нужно суммировать, диапазон_условия это диапазон, данные в котором нужно проверить на соответствие условию. Функция может принимать до 127 пар диапазонов и условий!!!

Вернёмся к нашему примеру. Наша первая задача – найти сумму продаж за Январь. В ячейке L3 пишем формулу =СУММЕСЛИМН, далее после скобок указываем диапазон_суммирования – E3:E32. После этого указываем диапазон_условия - C3:C32 и адрес ячейки с условием -H3.

По точно такому же принципу можно добавлять дополнительные диапазоны условий.


Более того, можно пользоваться математическими операторами для задания условий отбора значений, которые больше, меньше или равны определённым нами величинам. Например, для того, чтобы узнать общую сумму продаж Продукта №1, на сумму более 5000 сомони, в качестве одного из диапазона_условий добавим тот же диапазон, который указан в качестве диапазона_суммирования а в качестве критерия укажем ячейку K5.


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



Получаем название отчётного месяца с помощью связки функций ТЕКСТ(), КОНМЕСЯЦА() и СЕГОДНЯ()

Комментариев нет :

     
     Почти в каждом отчёте имеется заглавие в котором нужно указать на какую дату составлен отчёт (скриншот №1). Обычно в этой графе указывается последний день отчётного месяца, например «….. отчёт на 31. 03. 2018». И очень часто заполняя формы отчёта мы вспоминаем о том, что нужно изменить дату в этой графе только в последний момент, и то если посчастливится.


     Чтобы избежать этого, можно воспользоваться функцией КОНМЕСЯЦА(нач_дата; число_месяцев), где число_месяцев означает количество месяцев до или после нач_даты. Так как обычно мы делаем отчёты за предыдущий месяц число_месяцев у нас будет равно -1 а вместо нач_даты можем использовать функцию СЕГОДНЯ(). И получаем формулу «=КОНМЕСЯЦА(СЕГОДНЯ();-1)»(скриншот №2).


     А вот что делать если заглавие отчёта выглядит как на скриншоте №3? То есть нам нужно указать название отчётного месяца и года. С указанием года всё просто, нужно просто использовать функцию ГОД в связке с предыдущей формулой «=ГОД(КОНМЕСЯЦА(СЕГОДНЯ();-1))


    Но не всё так просто с указанием названия месяца. Да, в Excel существует функция позволяющая вычислить месяц по указанной дате МЕСЯЦ(дата), но она выдаёт лишь порядковый номер месяца а не его название.
     К счастью, мы можем обойти данное ограничение с помощью функции ТЕКСТ(), которую мы использовали для сцепления текста и даты. Благодаря аргументу формат данной функции мы можем получить значение месяца любой даты в нужном нам формате «=ТЕКСТ(КОНМЕСЯЦА(СЕГОДНЯ();-1);"ММММ")». Использование данной формулы вместе с предыдущей даёт нам возможность автоматически менять значения месяца и года в заглавии отчётов «=СЦЕПИТЬ("Данные по оборотам счетов за ";ТЕКСТ(КОНМЕСЯЦА(СЕГОДНЯ();-1);"ММММ");" ";ГОД(КОНМЕСЯЦА(СЕГОДНЯ();-1)); " года")» (скриншот №4).



СЕГОДНЯ(), ДЕНЬНЕД()

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



Теперь пойдём дальше, и сделаем так, чтобы даты в ячейках "H2" и "I2" автоматически менялись каждый день.
Для начала вставим в ячейку "I2" формулу "=СЕГОДНЯ()". Теперь, каждый день дата в этой ячейке будет меняться автоматически. 
Далее в ячейку "H2" вставим формулу "=СЕГОДНЯ()-1". То есть формула будет отнимать один день от сегодняшней даты и показывать предыдущий день. Однако, так как у нас в неделе 5 рабочих дней, следовательно нам нужно, чтобы в понедельник формула показывала нам в качестве предыдущего дня не воскресную дату а пятничную.Узнать на какой день недели приходится та или иная дата мы можем с помощью функции ДЕНЬНЕД(дата; тип). Как видим у фунции ДЕНЬНЕД() два аргумента и если с аргументом "дата" всё понятно, то для определения подходящего аргумента "тип" нужно свериться со справочной таблицей (скриншот №2). Для простоты используем тип №2 в котором неделя начинается с понедельника "=ДЕНЬНЕД(СЕГОДНЯ()-1;2)".


Далее с помощью функции ЕСЛИ() зададим условие, чтобы когда значение формулы "=ДЕНЬНЕД(СЕГОДНЯ()-1;2)" равняется 7 (воскресенье) в ячейке "H2" отображалась дата приходящаяся на пятницу (СЕГОДНЯ()-3).
В итоге получаем формулу "=ЕСЛИ(ДЕНЬНЕД(СЕГОДНЯ()-1;2)=7;СЕГОДНЯ()-3;СЕГОДНЯ()-1)".


Теперь, даты в ячейках "H2" и "I2" будут автоматически меняться в соответствии с днями недели.

ИЛИ()

Комментариев нет :




Дана таблица со списком имён и телефонных номеров клиентов (скриншот #1). Нужно узнать абонентами какого сотового оператора является большая часть клиентов.



Чтобы справиться с этой задачей, используем связку функций ЛЕВСИМВ(), ЕСЛИ() и ИЛИ(). Функцию ЛЕВСИМВ() мы используем для получения кода (префикса) оператора, функции ЕСЛИ() и ИЛИ() для формулирования условия. Список кодов сотовых операторов приведён в скриншоте #2.



Начнём с TCell. Так как префиксы префиксы данного оператора двухзначные (92, 93), используем формулу =ЕСЛИ(ИЛИ(ЛЕВСИМВ(C2;2)="92"; ЛЕВСИМВ(C2;2)="93");"тселл")
То есть формула получает из ячейки "C2" два первых символа и проверяет равна ли комбинация этих символов значениям "92" или "93". И если, комбинация первых двух символов равна хотя бы одному из указанных условий, формула выводит в ячейке текст "тселл".
Теперь напишем формулу для "Babilon" =ЕСЛИ(ИЛИ(ЛЕВСИМВ(C2;2)="98"; ЛЕВСИМВ(C2;2)="918");"вавилон").
Так как у этого оператора один двухзначный и один трёхзначный префикс, мы сначала берём два первых символа номера и сверяем их с префиксом "98" а потом берём три первых символа и сверяем их с префиксом "918". И если если хотя бы одно из этих условий является Истиной, формула выводит в ячейке текст "вавилон".
По такому же точно принципу пишем формулы для других операторов и объединяем их. В итоге получаем формулу =ЕСЛИ(ИЛИ(ЛЕВСИМВ(C2;2)="92";ЛЕВСИМВ(C2;2)="93");"тселл";ЕСЛИ(ИЛИ(ЛЕВСИМВ(C2;2)="98";ЛЕВСИМВ(C2;3)="918");"вавилон";ЕСЛИ(ИЛИ(ЛЕВСИМВ(C2;3)="911";ЛЕВСИМВ(C2;3)="915";ЛЕВСИМВ(C2;3)="917";ЛЕВСИМВ(C2;3)="919");"билайн";ЕСЛИ(ИЛИ(ЛЕВСИМВ(C2;3)="41";ЛЕВСИМВ(C2;3)="55";ЛЕВСИМВ(C2;3)="88";ЛЕВСИМВ(C2;3)="90");"мегафон"))))


И()

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

  • меньше или равны 10 сомонам;
  • больше 10 но меньше или равны 100 сомонам;
  • больше 100 но меньше или равны 1000 сомонам;
  • больше 1000 сомони.


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

Синтаксис такой связки выглядит следующим образом =ЕСЛИ(И(логическое_выражение_1;логическое_выражение_2); значение_если_истина; значение_если_ложь).По сути функция И() даёт нам возможность задавать функции ЕСЛИ() более одного условия, соблюдение которых является обязательным. 

Введя перечисленные выше условия (скриншот №2), получаем следующую формулу: 
=ЕСЛИ(B2<=10;"до 10 сомони";ЕСЛИ(И(B2>10; B2<=100);"от 10 до 100";ЕСЛИ(И(B2>100; B2<=1000);"от 100 до 1000";ЕСЛИ(B2>1000;"больше 1000")))).


Теперь таблицу можно легко отфильтровать по значениям в столбце "С", либо же разбить по группам с помощью сводной таблицы.

Вложенные ЕСЛИ()

Комментариев нет :

В прошлом посте мы использовали функцию ЕСЛИ() для выбора между двумя условиями. Но что если нужно сделать выбор между тремя и более условиями?
К примеру на скриншоте №1 показана форма ввода для создания и распечатки договора (данные в форме вымышлены).


Как видите в ячейке "В8" вводится счёт договора, и нам нужно чтобы на основании этого счёта в ячейке "В11" Excel показывал нам его валюту.
В предыдущих постах мы уже научились находить валюту счёта с помощью функции ПСТР(). В нашем случае формула нахождения валюты будет выглядить следующим образом =ПСТР(B8;6;3).

Обычно у нас банки открывают счета в четырёх валютах:
  • доллары США (840)
  • российские рубли (810)
  • евро (978)
  • сомони (972)
В итоге формируем четыре условия:
  • Если содержит "840" - пиши "доллары США";
  • Если содержит "810" - пиши "российские рубли";
  • Если содержит "978" - пиши "евро"
  • Если содержит "972" - пиши "сомони"
Теперь нужно лишь вложить эти условия друг в друга. На выходе получаем формулу =ЕСЛИ(ПСТР(B8;6;3)="840";"доллари ИМА";ЕСЛИ(ПСТР(B8;6;3)="810";"рубли русй"; ЕСЛИ(ПСТР(B8;6;3)="978";"евро";ЕСЛИ(ПСТР(B8;6;3)="972";"сомонӣ"))))