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




