【问题标题】:Calculate EndDate using a formula on Excel使用 Excel 上的公式计算 EndDate
【发布时间】:2016-11-29 01:53:42
【问题描述】:

所以我正在尝试编写一个公式,让我知道一个项目的 endDateTime 只知道两件事:

  1. 开始日期;
  2. 完成项目需要多少小时;

这里的问题是我不能只使用普通的 excel 公式。

我尝试使用 =WORKDAY.INTL(date,days,"workingDaysPattern",holidaysTable) 但我的问题是其中一个前提是 workingTimePerDay 也是一个变量。

例子:

startDateTime => 2016 年 11 月 29 日 10:00,需要 125 小时才能完成。

每周一我有 2 小时的工作时间;

星期二 3 小时;

星期三 8 小时;

星期四 10 小时;

星期五 5 小时;

星期六 12 小时;

周日 0 小时;

总共 40 小时。 好的,我可以计算平均值并说这需要 3 周和 0,125 周。然后我只需要总结它,直到我得到预期的结果,但是......因为我没有“一段时间”或任何类型的循环,我不知道如何到达那里。 也因为我必须尊重假期,所以我不能只建立一个数组公式,比如:

{=SUM(CHOOSE(WEEKDAY(ROW(INDIRECT(date1&":"&date2))),1,2,3,4,5,6,7))}

有什么想法吗?

【问题讨论】:

  • UDF 怎么样?这是您使用 vba 代码创建的公式。
  • 我希望@Andreas,它会更容易完成。
  • 那么为什么不使用UDF呢?我不明白......你的回答是否意味着你已经完成了这个问题?

标签: excel algorithm formula


【解决方案1】:

好的。我得到了它。以防万一有人需要这个。 (我对此表示怀疑) 我们知道的事情:

  • 开始日期; TaskWorkingHoursNeededWorkingHoursPerDay假期表

首先,我们创建一个工作日表,其中包含 WEEKDAY function 。因为我们知道每周的总工作时间(总和 WorkingHoursPerDay),所以计算总工作周数(超过):

ExceededWorkingWeeks = CEILING(TaskWorkingHoursNeeded/WorkingHoursPerWeek;0)

第二,如果是这样的话,多少天(超过):

ExceededWorkingDays = exceededWorkingWeeks / countDaysWhereExistWorkingHours

三、在多少小时内(超过):

ExceededWorkingHours = ExceededWorkingWeeks * WorkingHoursPerWeek

因此,如果我们使用 ExceededWorkingDays 并没有忘记假期和一周中的工作天数 (Resource),现在我们可以计算超出的结束日期:

ExceededEndDate = WORKDAY.INTL(StartDate, ExceededWorkingDays, "patternWorkingWeekDays", HolidaysTable)

现在是“丑陋”的部分。很多 if 和 else 就完成了。

对于从 0 到 6 的 7 个 value 仓位,我们首先计算从 value 天减去 ExceededEndDate 的日期。然后要知道这一天是否重要,我们计算这是否是我们 patternWorkingWeekDays 上的工作日并且它不是假期:

CheckWorkDay = NETWORKDAYS.INTL(ValueNewDate;ValueNewDate;"patternWorkingWeekDays";HolidaysTable)

如果返回 1,则表示该工作日的小时数要减去 ExceededWorkingHours。使用“索引对齐”计算工作日:

ValueNewWeekDay = 7-MOD(ABS(value+(7-WEEKDAY(ExceededEndDate)));7)

使用这个 ValueNewWeekDay 来索引我的工作日表,我可以知道我必须减去多少小时到 CurrentExceededWorkingHours

对于每个工作日,而不是假期,将工作时间减去 CurrentExceededWorkingHours,直到我们得到 CurrentExceededWorkingHours < TaskWorkingHoursNeeded。如果 ValueNewDate 低于 StartDate,当然会检查每个 value

按照客户的要求,我们可以将所有这些公式放在一个单元格中。

简历:

实际结束日期的计算方法是减去超过一周(7 天)的小时数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多