Страницы: 1
RSS
Расчет остатков с учетом сроков годности партий
 
Добрый день! Прошу помощи в решении практической задачи, сам бьюсь уже не первый день: необходимо рассчитать остаток товара и размер возможного списания на дату (в примере эти столбцы выделены оранжевым и заполнены вручную) учитывая сроки годности партий. При этом необходимо учитывать, что:  
1) На остатке одновременно могут числиться несколько партий с разными сроками годности;  
2) в первую очередь расходуется партия с ближайшим сроком годности;  
3) на следующий день после окончания срока годности остаток по партии обнуляется.  
Очень расчитываю вашу на помощь/совет. Заранее спасибо!
 
остаток: =СУММПРОИЗВ(--($B$4:ИНДЕКС($B$4:$B$65536;$D$1)<=F4);--($C$4:ИНДЕКС($C$4:$C$65536;$D$1)))-СУММ($G$4:G4;$I$4:I4)  
списание: =ЕСЛИ((СУММПРОИЗВ(--($D$4:ИНДЕКС($D$4:$D$65536;$D$1)<F4);--($C$4:ИНДЕКС($C$4:$C$65536;$D$1)))-(СУММПРОИЗВ(--($D$4:ИНДЕКС($D$4:$D$65536;$D$1)<F4))>0)*СУММ($G$3:G3)-СУММ($I$3:I3))<0;0;СУММПРОИЗВ(--($D$4:ИНДЕКС($D$4:$D$65536;$D$1)<F4);--($C$4:ИНДЕКС($C$4:$C$65536;$D$1)))-(СУММПРОИЗВ(--($D$4:ИНДЕКС($D$4:$D$65536;$D$1)<F4))>0)*СУММ($G$3:G3)-СУММ($I$3:I3))
 
забыл  
а в D3 =ПОИСКПОЗ(;ЕСЛИ(B4:B65536;)) как массив
 
Спасибо ограмное! Сейчас буду разбираться с вашей формулой. Единственный момент - я забыл сказать, что остаток не может быть отрицательным. Но уже в таком виде заметно упрощает жизнь :)
 
Как вариант
 
Михаил, а зачем там функция =ЕСЛИ(K...;; ?
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
{quote}{login=Владимир}{date=25.11.2010 12:12}{thema=}{post}Михаил, а зачем там функция =ЕСЛИ(K...;; ?{/post}{/quote}Во-первых, этот вариант не до конца корректен (как и вариант выше, между прочем), но поскольку автору не нужно...  
Во-вторых - я уже забыл, зачем там что... (потому, что не совсем правильно).
 
А что там не то? По-моему, задачу Вы выполнили.
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
Получилась "подгонка под ответ". Если менять исходные данные, начинаются ошибки. В частности, не учтен вариант, когда есть списание, и, в то же время, есть годный товар. И в движении товара не должно быть пропущенных дней, ибо, если списание или поставка попадет на выходной - они не учтутся.
 
{quote}{login=Владимир}{date=25.11.2010 12:12}{thema=}{post}Михаил, а зачем там функция =ЕСЛИ(K...;; ?{/post}{/quote}В столбце "К" если проверяет дату списания; в столбце "L" - проверяет наличие отатка на дату списания.
 
{quote}{login=Михаил}{date=25.11.2010 12:28} {post}...но поскольку автору не нужно...{/post}{/quote}  
 
Автору, на самом деле, нужно :) Просто не хочу уж совсем на шею садиться и пытаюсь на основе ваших вариантов родить свой. Пока безрезультатно, правда :)
 
Проверьте и отпишитесь
 
Михаил, спасибо, протестировал. Опять работает не совсем корректно - во вложении пример. 19.10.10 должна списаться только одна партия - а по факту списывается весь остаток...
 
поправка: в К4    
=ЕСЛИ(СУММ(K3;-L4;-G4;СУММЕСЛИ($B$4:$B$20;F4;$C$4:$C$20))>0;СУММ(K3;СУММЕСЛИ($B$4:$B$20;F4;$C$4:$C$20);-G4;-L4);)
 
Пост от 26.11.2010, 13:05 не видел, буду смотреть
 
Так, наверно
 
Работает отлично, Михаил! Спасибо!!!
 
Михаил тут уже оказывается поработал. А я с датами не смог справиться...  
 
--  
21166
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
Страницы: 1
Читают тему
Наверх