Страницы: 1
RSS
FPFO (англ. First Product First Out - первый изготовлен - первый выходит)
 
В середине файла сказочным сценарием расписана суть вопроса, думаю что так будет понятно. Искренне Благодарю за помощь!
 
Цитата
NOA пишет: В середине файла сказочным сценарием расписана суть вопроса
Стало быть, всем придётся скачивать Ваш файл? Хоть кратко, но суть вопроса должна быть в самом сообщении.
FIFO слышал,  FPFO - нет))
 
для D2 и обязательно протянуть до D10
Код
=МАКС(СУММ($B2:$B$10)-СУММ($C2:$C$10)-СУММ($E3:$E$11);0)
Изменено: ктулху - 28.06.2014 01:23:19
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Простите но боялся что одним предложением не раскрою суть вопроса а только запутаю.
Честно говоря для меня только сегодня данный метод ротации материалов стал открытием.
FPFO - который позволяет лучше учесть специфику определенной отрасли или свойства определенного товара : Хотя действительно, чтобы не запутывать можно сказать что это FIFO!
 
Так вариант ктулху подошёл?
 
Цитата
Юрий М пишет: Так вариант ктулху подошёл?
вы не стесняйтесь, накидывайте, накидывайте ещё вариантов.
автор темы придёт - выберет :)
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
ктулху, Благодарю за вариант, но в D2 получил цифру 8 а должен был бы получить 1 потому что на 27.06.2014 спелым будет только одно яблоко, а в D4 должен был бы получить 0.
Простите не знаю насколько доступно объяснил. То есть еж максимум может получить 8 но 8 нужно по датам расписать и также критерием является спелость. Благодарю!
 
Цитата
ктулху пишет:
и обязательно протянуть до D10
не знаю, насколько это доступно? то, что выделено полужирным.
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
В колонке D я получил следующий результат, а хотел бы получить как в F.
Благодарю!
 
мде... я ошибся - рисовал формулу в столбце E и не откорректировал при выкладке на форум.
прошу прощения.
конечно же,
Код
=МАКС(СУММ($B2:$B$10)-СУММ($C2:$C$10)-СУММ($D3:$D$11);0)
(хотя, честно говоря, можно было и догадаться - ну причем тут столбец E, если в нем нет ни данных, ни формул?  ;)  )
Изменено: ктулху - 28.06.2014 02:37:19
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Искренне благодарю за помощь!
Относительно того что можно догадатися- так мы люди устроены, когда сам на свои силы рассчитываешь то начинаешь думать, как только тебе кто-то помогает сразу свой ум отключается!)
Еще раз благодарю!
 
Начал использовать выше указанную помощь и понял что не правильно построил задачу! Прибавил отдельную колонну дат когда будут приходить ребята, то есть в игру вступают даты.
Благодарю всех за помощь!
 
для ребят используйте при заполнение дату из столба А. а в формуле "$D_:$D$10" замените на $D_:$F$10 - только 10 тоже надо поменять будет.
 
с учетом того. что даты вперемешку - могу предложить только UDF
Код
Function f&(r1 As Range, r2 As Range, d As Date)
  Dim a(), b(), c(), s&
  a = r1.Value: b = r2.Value
  ReDim c(Application.Min(r1.Columns(1), r2.Columns(1)) To Application.Max(r1.Columns(1), r2.Columns(1)), 1 To 3)
  For i = 1 To UBound(a): c(CLng(a(i, 1)), 1) = a(i, 2): Next
  For i = 1 To UBound(b)
    s = 0
    For j = 2 To UBound(b, 2): s = s + b(i, j): Next
    c(CLng(b(i, 1)), 2) = -s
  Next
  s = 0
  For i = UBound(c) To CLng(d) Step -1
    c(i, 3) = c(i, 1) + c(i, 2) + s: s = c(i, 3)
    If s > 0 And c(i, 1) > 0 Then s = 0
  Next
  f = IIf(c(CLng(d), 3) < 0, 0, c(CLng(d), 3))
End Function


пс. UDF здесь больше для удобства использования и автопересчета.
с учетом того, что для любого значения массивы почти полностью перезаполняются - был бы оптимальнее просто макрос.
алгоритм практически тот же.
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Цитата
ктулху пишет- с учетом того. что даты вперемешку
ктулху - Благодарю за помощь, спасибо!
Но честно говоря я не сильный в таких вещах!
Возможно я что-то не так делаю
- создал новый файлик с поддержкой макросов
- скопировал Ваш код, вставил в Visual Basic, сохранил и получил результат #ИМЯ?

Спрошу о следующей вещи, а если даты будут по порядку от - к,  можно тогда с помощью формул решить данное задание?  :cry:  
Всем спасибо за ответы!!!!
 
открыл Ваш файл - всё нормально.
возможно, у Вас установлен высокий уровень безопасности? надо сменить на средний или низкий.

Цитата
NOA пишет: можно тогда с помощью формул решить данное задание?
я не формулист. высшая арифметика в Excel мне недоступна.
так что не могу сказать точно. предполагаю, что можно.
но пробовать не буду - боюсь вывихнуть моск. :oops:
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Цитата
Ктулху пишет- вывихнуть моск
А я простой смертный, не вывихнув сразу умру  :)  
Спасибо всего наилучшего!
 
ктулху
Позвольте обратиться к Вам, Я перенес Вашу функцию на файлик которым я непосредственно должен пользоваться!
Функцию перенес точно как в файлику с ежом, Посмотрите пожалуйста, Благодарю!

Мои параметры макросов-галочка стоит на пункте (Включить все макросы)
 
udf должна быть в стандартном модуле, а Вы поместили её в модуль листа.
подробнее здесь
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
udf работает но результат не соответствующий, если у Вас будет время посмотрите пожалуйста! Благодарю!
 
в вашем файле-примере не было ни одного случая повторения дат хотя бы в одном из массивов.
в реале - сколько душе угодно.

доказательство того, что при отсутствии повторений всё работает - в файле.

кроме того, оговорка по кодам тоже больно ударила по печени.
это очень грустно - делать на форуе решение, предназначенное на помойку.
по сути - код надо писать заново.
но, боюсь, сил на новые подвиги уже нет.
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Благодарю за помощь, думаю и не только я благодарен! Благодарим!
 
Уважаемые формумчані продолжаю раньше созданную тему где входные параметры имели два ограничения ДАТА и количество яблок. Данную задачу решил ктулху с помощью макроса. Сейчас ежу ) нужная информация на какую дату на сколько шт яблок и какого сорта он может рассчитывать, то есть добавляется еще одно условие сорт яблок!
Обращаюсь к Вам уважаемые пользователи, возможно кто-то может формулой решить эту задачу, возможно кто-то имеет соответствующие знания, чтобы доделать макрос автора ктулху!

Благодарю за помощь!
 
Подсчет количества и суммы остатков методами FiFo и LiFo
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
ну, если пойти по пути наименьшего сопротивления и просто подправить имеющуюся udf, то, кажется, так:
Код
Function f#(r1 As Range, r2 As Range, d As Date, sort$)
  Dim a(), b(), c(), s&
  a = r1.Value: b = r2.Value
  ReDim c(Application.Min(r1.Columns(1), r2.Columns(1)) To Application.Max(r1.Columns(1), r2.Columns(1)), 1 To 3)
  For i = 1 To UBound(a)
    If a(i, 2) = sort Then c(CLng(a(i, 1)), 1) = a(i, UBound(a, 2))
  Next
  For i = 1 To UBound(b)
    If b(i, 2) = sort Then c(CLng(b(i, 1)), 2) = -b(i, UBound(b, 2))
  Next
  s = 0
  For i = UBound(c) To CLng(d) Step -1
    c(i, 3) = c(i, 1) + c(i, 2) + s: s = c(i, 3)
    If s > 0 And c(i, 1) > 0 Then s = 0
  Next
  f = IIf(c(CLng(d), 3) < 0, 0, c(CLng(d), 3))
End Function
первый аргумент - массив "поспевших" яблок, первый столбец - дата, втоой - сорт, последний столбец - кол-во
второй аргумент - массив яблок, доставшихся ребятам (столбцы такие же)
третий - дата, когда придёт ёж
четвёртый - сорт, который нужен ежу

пример вызова с листа:
для "пробных" массивов, ячейка EQ5
Код
=f($DX$5:$EC$7;$EE$5:$EJ$8;EL5;EM5)
для "реальных" массивов, ячейка DT5
Код
=f($DA$5:$DF$246;$DH$5:$DM$42;DO5;DP5)
скорость оставляет желать лучшего, в дальнейшем нужна оптимизация или вообще другой алгоритм.
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Вы даже не представляете на сколько я ВАМ БЛАГОДАРНЫЙ! Все работает!!! Благодарю ВАС за ваши знания а еще больше за то что ими поделились !
Вы наилучший человек на планете Excel !!!
Я в свою очередь благодаря Вам поставил собе цель научиться хотя бы примитивный но написать макрос.
Новых достижений ВАМ и результатов! Спасибо!
Страницы: 1
Наверх