Страницы: 1
RSS
Разнесение оплат по накладным с помощью макроса, Разнесение оплат по накладным с помощью макроса
 
Добрый день!

Помогите, пожалуйста, решить задачу, чтобы оптимизировать работу, у меня не хватает знаний для написания такого макроса.
Есть реестр по продажам, есть второй реестр по оплатам от клиента и необходимо разнести оплаты методом ФИФО, то есть разнести оплаты сразу на более старые накладные, потом на более свежие. Так же необходимо указать за какую дату отражена оплата и какая сумма осталась неоплаченной. Но есть нюанс, что по одной накладной оплаты могут быть за несколько дней. Файл прилагаю
Описание содержимого файла:
1 таблица (B:P) - Исходный реестр Реализаций
2 таблица (W:AB) - Информация по оплатам, если в столбце AB указано "Брать", значит данную оплату необходимо учитывать, если комментарий "Не брать" - не учитывать.
3 таблица (AD:AS) - Итоговый реестр, учитывающий необходимые оплаты, который должен получиться с помощью макроса. Строка, которая выделена цветом - это остаток задолженности после оплат, ее не надо выделять цветом, это просто для примера.

Буду очень благодарна, если сможете помочь :-)
 
Это техзадание. а не вопрос. Перенести тему в платную ветку?
 
дааа... сильно... тут Power Query не обойдёшься ))
А код в файле ваш или чужой и что этот код делает с данными (ну может он уже половину работы делает и его лишь надо поправить чуть-чуть)?

P.S. Виктор прав... тут уже в платную ветку надо переносить ))
Изменено: New - 01.08.2020 00:52:35
 
Основная проблема - структура исходных данных. И, как следствие, структура конечных данных. А попросту говоря - нет ни там, ни там никакой здравой структуры. И поэтому макрос тут не поможет. В крайнем случае, будет работать конкретно на этих данных, а при на других данных или просто дополнении текущих данных результат может быть непредсказуем.

Когда-то давно делал подобное только формулами без макроса. За основу брал Ведомость операции по аналитическому счёту (есть такое в бухгалтерии). Основные данные (отгрузки/оплаты) там в одной таблице, суммы дт (дебет) и кт (кредит) расположены в разных столбах и отсортированы по дате. Для предложенного случая нескольких клиентов надо сначала отсортировать по ID партнёра (шифр, или ИНН), чтобы данные по одному клиенту шли подряд и потом по дате. Ну и добавить всякие хотелки типа Канал, отсрочка и др.

В файле подогнанный под начальные условия результат.
- Признак оплаты "не брать" - в столбце Содержание (или Договор для отгрузок). Можно переделать на корр.счёт =13. В ячейке V1 - сам признак.
- В N1 и O1 - даты периода ведомости. Нужны для корректной работы формулы просрочки.
- В таблице есть Условное форматирование для подсветки последней строки по каждому партнёру. Для больших объёмов данных эту УФ лучше удалить.
- Добавлены данные клиента 555555 для вариантов: сначала оплата; оплаты больше отгрузок, но одна из них - не брать.
Добавлены столбцы:
- Сальдо текущее - сальдо на дату по строке. Тут не учитывается "не брать".
- Начало оплаты и Полная оплата - даты: соответственно дата начала оплаты и полной оплаты каждой отгрузки. Неопл - отгрузка не оплачена.
- Просрочка (дней) с учётом дней в столбце Отстрочка.
- Оплачено и Неоплачено - суммы: тут понятно.
- В скрытых столбцах R-Z - вспомогательные формулы.

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


Свой вариант я делал давно ещё до знакомство с planetaexcel. Другие варианты реализации подобной темы можно найти на этом же сайте в поиске. В основном ФИФО применительно к товарам: даты прихода/расхода. Есть и по оплатам. Например, возможно, более удобным будет вариант в теме Списание ФИФО без VBA. Но там тоже соблюдается главный принцип: данные в одной таблице и строго структурированы.
Страницы: 1
Наверх