【发布时间】:2019-06-23 05:51:06
【问题描述】:
在 Excel 中,假设我有一个每周可用的可用日期和时间列表(2 个单独的列):
DAY TIME
Monday 5:00 PM
Tuesday 4:00 PM
Wednesday 11:00 AM
Thursday 4:00 PM
Friday 11:00 AM
Friday 12:00 PM
这个列表是可变的,可以随时更改,所以解决方案需要是一个公式,可以根据可用列表的变化重新计算。
然后我有一列可能的“开始”日期/时间:
START TIME
3/12/19 3:00 PM (Tuesday)
3/12/19 4:00 PM (Tuesday)
3/15/19 2:00 PM (Friday)
有没有一种方法可以将开始日期旁边的 3 个单独列中的下 3 个可用天数/时间计算为初始开始日期之后的实际日期?如果可用日期与开始日期是一周中的同一天,则需要检查时间是否早于可用时间。如果是,那么它可以在同一天晚些时候......如果开始时间在可用时间之后,那么它必须在一周之后。
计算的时间可以与前一行相同,因此公式不需要考虑任何类型的重复预订。 2 行中的相同日期/时间将产生相同的 3 个下一个可用日期/时间。
所以在上面的例子中,它会导致:
START TIME Next Available Date 1 Next Available Date 2 Next Available Date 3
3/12/19 3:00 PM 3/12/19 4:00 PM 3/13/19 11:00 AM 3/14/19 4:00 PM
3/12/19 4:01 PM 3/13/19 11:00 AM 3/14/19 4:00 PM 3/15/19 11:00 AM
3/15/19 2:00 PM 3/18/19 5:00 PM 3/19/19 4:00 PM 3/20/19 11:00 AM
我一直在尝试使用数组公式,但无法让它适用于所有情况。解决方案需要基于公式,并且不使用 VBA 或 UDF。
【问题讨论】:
-
我认为你问错了问题。恕我直言,您需要一个基于可用日期列表从 NOW() 计算的列表,基本上是将您的基于工作日的列表转换为基于日期的列表,该列表不包括过去的任何内容并至少延长 7 天到未来。然后,您可以在此列表中找到 3 个未来日期,而无需将日期转换为工作日或排除过去的日期。显然,只有当您有合适的清单可供参考时,才能完成这项任务。
-
我不认为 Now() 参与其中,因为它必须从列出的开始日期确定下一个日期。这是未来与过去的基础。如果开始日期是 3 年前,它仍然应该计算之后的 3 个日期。 Now() 是否改变并不重要(即,我今天打开它还是明天打开它)。
-
了解这一点很有用。关键是要避免规则,“如果可用日期与开始日期相同,则需要检查时间”。这将使公式的大小增加一倍或三倍,并且应该通过没有开始日期而是开始时间来排除,并且列表中不包含不合适的日期,这意味着,列表必须构建为仅包含合适的时间。
标签: excel excel-formula