我们有一个业务流程,需要我们计算
(TODAY + 8 weeks) to the nearest Sunday or Wednesday.
例如
- 今天是 07/12。
- 8 周是 01/02/18
- 今天是星期四。 计算到过去最近的星期三或星期日 [1]。 计算到未来最近的星期三或星期日 [3]
- 选择计算日期之间跳数最少的日期。 因此我们选择星期三 31/01/18
- 如果是星期五并且有平局(星期三为 -2,星期日为 +2),则选择星期日。
我对 Excel 很满意,=TODAY()+(8*7)
但下一步is this a Wednesday or Sunday, if not count forward and back until it is both then compare the two values and select the closest
就远远超出了我的能力范围。我猜想它需要一些 VB,但这不是我熟悉的东西(虽然我可以在 powershell 中做到这一点,但我不是没有能力,只是不熟悉)。
有人能帮助我开始吗?
最终,我想将结果嵌入到 Word 文档中,但这可以稍后再进行。
答案1
由于您不想回溯超过一天(从最初添加的 56 开始)[1],因此只需添加 56,减去 2,然后找到下一个星期三或星期日的情况即可。
您可以使用WORKDAY.INTL
功能(Excel 2010 或更高版本)如下所示:
=WORKDAY.INTL(TODAY()+8*7-2,1,"1101110")
WORKDAY.INTL
可以自定义使用类似字符串来定义“工作日” "1101110"
- 该字符串包含 7 个1/0
值,从星期一开始到星期日结束,其中 0 代表工作日,1 代表非工作日,因此"1101110"
将星期三和星期日定义为唯一的工作日
在旧版本的 Excel 中,你可以使用此公式获得相同的结果
=MIN(TODAY()+8*7+6-WEEKDAY(TODAY()+8*7-{2,5}))
[1] 解释:无论朝哪个方向,最近的星期日或星期三都不能超过 2 天,并且当日期 + 56 = 星期五时,帕特里克说他想选择星期日.....所以如果日期 + 56 是星期四或星期一,那么您需要后退 1,在任何其他情况下,您要么保留日期 + 56,要么向前移动。
答案2
这对你来说有什么用?它应该计算未来 8 周内最近的星期日或星期三。
Today()
为了验证它是否有效,请在 A2 中输入一个日期。在您满意它是否有效后, 您可以将参考从 A2 更改为。
将此公式放入 B2:
=(A2+(8*7)) - CHOOSE(WEEKDAY(A2+(8*7)),0,1,-1,0,1,-2,-1)
将此公式放入 C2 中以检查结果:
=TEXT(B2,"DDD")
要测试它,请将您的日期放在 A2 中并检查您的日历。
如果您的工作日不是从星期日开始,那么您可以在条件测试中调整 4 IF()
。