You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

日期公式输出异常:给定日期求下周五时周六输入返回上周五

计算给定日期的下一个周五公式问题

需求:使用Excel公式计算给定日期对应的下一个周五。

问题描述

当输入日期为周六时,当前公式返回上周五而非正确的下周五,示例如下:

A列(公式计算结果)H列(输入日期)
21/04/2023(错误)22/04/2023
28/04/2023(正确)23/04/2023

上述两个A列结果均应为28/04/2023。

当前使用公式

=IF(H3986="","",(H3986+(6-WEEKDAY(H3986))))

注:H列与A列单元格均已设置为日期格式。

已尝试的修改公式

  • IF(H3989="","",(H3989+7-WEEKDAY(H3989)))
  • IF(H3989="","",(H3989+(6-WEEKDAY(H3989, 2))))
  • IF(H3989="","",(H3989+(5-WEEKDAY(H3989, 16))))
  • IF(H3989="","",(H3989+(5-WEEKDAY(H3989, 2))))

解决方案

方法一:基于WEEKDAY的通用公式

=IF(H3986="","",H3986 + (5 - WEEKDAY(H3986, 2) + 7) % 7)

逻辑说明

  • WEEKDAY(H3986, 2):指定周一为周1、周日为周7,此时周五对应数值为5。
  • (5 - WEEKDAY(H3986, 2) + 7) % 7:通过取模运算确保得到从当前日期到下一个周五的正天数差。比如输入日期为周六(周6)时,计算得(5-6+7)%7=6,即加6天到下周五;输入为周日(周7)时,得(5-7+7)%7=5,加5天到下周五;输入为周五时,得(5-5+7)%7=7,返回下周五。

若需要当天为周五时返回当天,可调整为:

=IF(H3986="","",H3986 + IF(WEEKDAY(H3986,2)=5,0,(5 - WEEKDAY(H3986, 2) + 7) % 7))

方法二:使用WORKDAY.INTL函数(Excel 2010+适用)

=IF(H3986="","",WORKDAY.INTL(H3986,1,"0000011"))

逻辑说明

  • WORKDAY.INTL函数用于计算指定工作日之后的日期,第三个参数"0000011"表示周六、周日为休息日。
  • 参数1表示往后推1个工作日,因此无论输入日期是周几,都会返回之后的第一个周五(周五输入则返回下周五)。

若需要当天为周五时返回当天,调整为:

=IF(H3986="","",IF(WEEKDAY(H3986,2)=5,H3986,WORKDAY.INTL(H3986,1,"0000011")))

内容的提问来源于stack exchange,提问作者JD Farina

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 08:57:04