Я создаю лист подсчета циклов. Лист 1 будет вводом пользователем, где будут помещены найденный материал и количество. Лист 2 представляет собой моментальный снимок запасов на момент подсчета. Я хочу, чтобы количество найденного материала распределялось между количествами на листе 2 до тех пор, пока количество листа 1 не будет исчерпано. Также было бы полезно распределить количество в порядке от самой новой партии (код дня) до самой старой партии (FIFO).
Я могу сделать эту работу, просматривая только один материал за раз с функциями MIN MAX. Проблема, с которой я сталкиваюсь, заключается в том, что я добавляю критерии. Прилагаю скриншот желаемого результата. Как вы можете видеть, идеальная формула в D11 обнаружила, что 30 000 P9919617 были доступны на «листе 1», и распределила это количество через запасы на «листе 2», пока 30 000 не были исчерпаны, оставив корректировку на 10 584 для партии 2278US9602. Я также приложил ссылку на лист ниже. https://docs.google.com/spreadsheets/d/1RsmNMZS6yy7ayWs0cdYJlWyqTCgdieNXLB9sancsg0Y/edit?usp=sharing
пытаться:
=INDEX(LAMBDA(Q, A, S, IFERROR(IF((COUNTIFS(A, A, ROW(A), "> = "&ROW(A))=1)*(VLOOKUP(A, S, 2, )<>""),
VLOOKUP(A, QUERY({Q, VLOOKUP(INDEX(Q,,1), S, 2, )}, "select Col1,Col2-Col3"), 2, ), 0)))
(QUERY(A2:C, "select A,sum(C) group by A"), A2:A, Sheet1!A:B))
=INDEX(LAMBDA(p, LAMBDA(r, LAMBDA(u, LAMBDA(s, t, w,
IFNA(IF(s<>"", s, IF(t<>"", t, w))))
(IF(r<0, 0, ), IF(COUNTIFS(p, p, r, ">0", ROW(p), "< = "&ROW(p))=1, r, ),
u-ARRAY_CONSTRAIN({""; u}, ROWS(u), 1)))
(IF(COUNTIFS(p, p, r, ">0", ROW(p), "< = "&ROW(p))>0, r, )))
(MMULT(1*TRANSPOSE(IF((TRANSPOSE(ROW(p))>=
ROW(p))*(p=TRANSPOSE(p)), OFFSET(p,,2), 0)), ROW(p)^0)-VLOOKUP(p, Sheet1!A:B, 2, )))
(A2:INDEX(A:A, MAX(ROW(A:A)*(A:A<>"")))))
Так что это работает отлично. Вместо того, чтобы дать мне это решение, я хотел бы узнать, как работает такая формула. ЕСЛИ у вас есть свободное время, я хотел бы сотрудничать, или объяснение формулы было бы удивительным.
Обновление, я столкнулся с проблемой, которую не тестировал и не ожидал. Если количество материала, распределяемого с «листа 1», не соответствует требованиям первого экземпляра материала на «листе 2», отображается корректировка 0. Затем последний экземпляр материала на «листе 2» поглощает полную настройку для всех экземпляров материала. Я обновил лист, чтобы лучше визуализировать это.
@AdamOaks, ваше обновление довольно сложное, к сожалению, предлагаемое решение больше не действует, и для его соответствия вашему обновлению потребуется полная переработка логики. Я играл с ним в течение 2 часов и еще не нашел решения. Я дам вам знать, если найду нужное заклинание в своем гримуаре.
Это идеально до сих пор в тестировании. Большое спасибо. Вы волшебник!