Страницы: 1
RSS
Начисление процентов на минимальный остаток
 
Добрый вечер, Ув. Форумчане!

"Сломал голову" над следующей задачей:
1. Есть банковская выписка по счету (дата, Дб, Кр, Остаток)
2. Есть шкала процентов, размер которых зависит от минимального остатка денег на счету в течении полного календарного месяца.
3. Необходимо: рассчитать проценты за каждый полный календарный месяц текущего года (в разрезе месяцев) и проценты за предыдущие периоды одной суммой.

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

Буду благодарен за любую помощь.
 
Дата для апреля есть. Почему для этого месяца не считаем?
 
Расчет проводим только для полных (завершенных) календарных месяце.
Апрель только начался...
 
Если в таблице будет 30.04.18? А если 27.04.18, но уже идет май? Что служит указзанием на то, что месяц завершен? Задача должна быть описана, здесь мало кто занимается подобной работой.

=ЕСЛИ(МАКС($B$3:$B$20)<K4;;ИНДЕКС($E$3:$E$20;ПОИСКПОЗ(K4-1;$B$3:$B$20)+(СЧЁТЕСЛИМН($B$3:$B$20;">="&K4;$B$3:$B$20;"<="&КОНМЕСЯЦА(K4;0))>0)))
В к4 и ниже - дата начала месяца.

Дальше сами.
 
Даты идут строго в хронологическом порядке (от старых, к новым).
Если в таблице нет даты, которая больше 30.04.2018, то апрель - не завершен, а май соответственно не начался.
 
Цитата
Alexey0185 написал:
Если в таблице нет даты, которая больше 30.04.2018, то апрель - не завершен, а май соответственно не начался.
Бред. Реализуемо - но бред. то есть если никаких операций с 01.04 до 31.12 нет - то фигвам?
По вопросам из тем форума, личку не читаю.
 
Спасибо, vikttur! Буду пробовать.
Апрель все таки (по формуле) попал в расчет, но это мелочи.
С текущим годом все понятно, а вот как провести расчет за предыдущие периоды, ведь составлять таблицу "первых чисел" месяца для всех лет - это не совсем логично.

БМВ, согласен, что "бред", но модель условная.
 
Апрель исключить - мелочи: доп. проверка даты. Формула неправильно сработает, если посреди месяца остаток уменьшится.
Но интерес к задаче уже иссяк: исправлять ошибки, уточнять задачу...
 
vikttur, Вистор, не получится так. Последняя дата в месяце, но не минимальный остаток в течении месяца.

Alexey0185,  по поводу предыдущих лет надо подумать.
По вопросам из тем форума, личку не читаю.
 
Спасибо, БМВ!!!
С утра на свежую голову буду разбираться.
 
Можно не смотреть. Судя по всему, если первого числа не было изменений, а в последующие дни месяца остаток больше чем на последний месяц предыдущего, то нужно считать что первого числа была эта сумма и она станет минимальным остатком.
По вопросам из тем форума, личку не читаю.
 
Попробовал формулы на рабочем файле.
При изменении массива дат, часть формул выдает "#Н/Д". Разобрался - периоды отсутствуют.
Но, к примеру минимальный остаток за август должен составлять 200 (на 01.08.2018), формула считает - 400.
Изменено: Alexey0185 - 10.12.2018 13:11:28
 
Alexey0185, #11
для предыдущего периода все равно пока не понимаю как.
Изменено: БМВ - 10.12.2018 17:14:29
По вопросам из тем форума, личку не читаю.
 
В очередной раз спасибо БМВ за помощь!
Буду пробовать. Предыдущие периоды попробую реализовать через макросы.
 
БМВ, прошу прощения за навязчивость, но как быть с верхней границей массива дат?
Первая дата у нас 31.07.2018, т.е. проценты за июль начисляться не должны (месяц не полный). Но июль в выборку попал.
Как откорректировать формулу таким образом, чтобы проценты за 1-й месяц не начислялись вовсе (не зависимо от того, будет первая дата 31.07.2018 или 01.07.2018) ?
 
Выше исправил
вот такое получается массивное
=IF((MAX($B$3:$B$12)>EOMONTH("1 "&K4&" "&L4;0))*ISNUMBER(MATCH(EOMONTH("1 "&K4&" "&L4;-1);$B$3:$B$12));IFERROR(1/(1/MIN(IF(DATE(YEAR($B$3:$B$12);MONTH($B$3:$B$12);1)=EOMONTH("1 "&K4&" "&L4;-1)+1;$E$3:$E$12);IF(ISNA(MATCH(EOMONTH("1 "&K4&" "&L4;-1)+1;));VLOOKUP(EOMONTH("1 "&K4&" "&L4;-1)+1;$B$2:$E$11;4);9^9)));VLOOKUP(MAX(IF(DATE(YEAR($B$3:$B$12);MONTH($B$3:$B$12);1)<=EOMONTH("1 "&K4&" "&L4;-1)+1;$B$3:$B$12));$B$3:$E$12;4;0));"-")
Изменено: БМВ - 10.12.2018 17:15:33
По вопросам из тем форума, личку не читаю.
 
Жесть!!!
У меня простые формулы массива ПОНЯТЬ не выходит. Только пользоваться по шаблону.
А здесь вообще - "лес"!

Буду пробовать. ОГРОМНОЕ СПАСИБО!
Страницы: 1
Наверх