You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Excel公式需求:获取给定日期的最近周五(取距离更近的前/后周五)

Excel公式需求:获取给定日期的最近周五(取距离更近的前/后周五)

嘿,我来帮你搞定这个找最近周五的需求!你想要的是给定一个日期后,自动返回距离它更近的那个周五——不管是之前的还是之后的对吧?

我给你准备了两种公式方案,适配不同版本的Excel:

方案一:适合Excel 365/2021及以上版本(逻辑更清晰)

直接把这个公式放到你需要结果的单元格里(假设原日期在A1):

=LET(
    current_day, WEEKDAY(A1,2),
    prev_fri, A1 - MOD(current_day -5,7),
    next_fri, A1 + MOD(5 - current_day,7),
    IF(A1 - prev_fri <= next_fri - A1, prev_fri, next_fri)
)

我给你拆解下逻辑:

  • WEEKDAY(A1,2):把日期转换成「周一=1,周日=7」的数字,这样周五对应的就是5,方便计算间隔。
  • prev_fri:算出当前日期之前最近的周五,用MOD函数得到当前日到上周五的间隔天数,再用原日期减去这个天数。
  • next_fri:算出当前日期之后最近的周五,用MOD函数得到到下周五的间隔天数,原日期加上这个天数。
  • 最后用IF判断:如果原日期到前周五的距离小于等于到后周五的距离,就返回前周五,否则返回后周五。

举个例子:如果A1是4/15/2024(那天是周一),前周五是4/12/2024(差3天),后周五是4/19/2024(差4天),公式会返回4/12/2024,完全符合你的要求;要是日期是4/17/2024(周三),距离后周五只有2天,就会返回4/19/2024

方案二:兼容所有Excel版本(无需新函数)

如果你的Excel版本比较旧,用这个展开式公式就行:

=IF(A1 - (A1 - MOD(WEEKDAY(A1,2)-5,7)) <= (A1 + MOD(5 - WEEKDAY(A1,2),7)) - A1, A1 - MOD(WEEKDAY(A1,2)-5,7), A1 + MOD(5 - WEEKDAY(A1,2),7))

逻辑和上面完全一致,只是把变量直接展开了,看起来长一点,但功能没差。

备注:内容来源于stack exchange,提问作者Jonnyboi

火山引擎 最新活动