![在 Excel 中计算递减天数](https://linux22.com/image/1548810/%E5%9C%A8%20Excel%20%E4%B8%AD%E8%AE%A1%E7%AE%97%E9%80%92%E5%87%8F%E5%A4%A9%E6%95%B0.png)
我正在尝试弄清楚如何预测一个进程需要多长时间才能赶上进度。该进程需要 26 天来处理 30 天的数据。它在第一天运行,处理最近完成的数据,最多可追溯到 30 天前。此进程完成后,它会再次运行,提取当前执行时间前最多 30 天的下一批尚未处理的数据。
第一次运行:30 天的数据,26 天内完成第二次运行:由于现在只存在 26 天的未处理数据,因此一直运行直到处理完这 26 天的数据...依此类推,直到赶上并能在 1 天内处理最近的作业。
这是我迄今为止计算的值的副本,虽然不确定它们是否完全正确,但我确信有更好的方法来更动态地计算它们。
- A2=30/26
- B 列只是 A2 的累积
- C5=A5-30
- C 列的其余部分 = 其上方的单元格 + $A$2
- D 列:=IF(C6>A6,"是","否")
按照上面的计算,要到2018年7月16日才能赶上。
一定有更好的方法来计算这个问题!
答案1
我将以不同的方式来解决这个问题,使用一个关于处理给定天数的数据所需时间的假设。
假设所需时间与数据量成正比。换句话说,如果处理 30 天的数据需要 26 天,那么处理 15 天的数据则只需要 13 天。
因此,如果第一次运行需要 26 天(并且还有 26 天的数据需要处理),那么第二次运行需要 26/30 天的时间。此过程重复进行,下表显示了后续运行所需的时间。
B3中的公式为: =B2*26/30
。如此往下填充,直到运行时间小于一天为止。
如最后一行所示,运行 24 用时不到 1 天,并且该过程“赶上进度”。所有运行的总时间为 188.7 天。如果某次运行不能在前一次运行结束的同一天开始,您可能需要在汇总之前将每次运行的时间四舍五入。
要计算“补课”日期,请使用=TODAY()+188.7
。我得到的结果为 6/24/18
答案2
每天,它完成 30/26 天,但过了一天。因此,每天的净收益是 [(30/26)-1] 天。这相当于每天多获得 4/26 天。这意味着需要 26/4 天才能赶上一天。要赶上 30 天,需要 30*(26/4) 天。我们可以取消得到 30*13/2,然后再次取消得到 15*13,即 195。
但是,这种计算有几个复杂之处。例如,如果您认为当积压时间少于一天时,流程就会“赶上”,就像 Bandersnatch 的答案似乎所做的那样,那么我的答案就会高估所需时间。另一方面,如果每次迭代都必须是整数天数,那么这将低估它。等等。
这与解决蜜蜂难题的基本原理相同:http://mathworld.wolfram.com/TwoTrainsPuzzle.html