EXCEL日期按规则前推

来源:百度知道 编辑:UC知道 时间:2024/05/16 07:16:12
已知几个时间点。比如7月15日 8月19日 10月20日 11月21日。
怎么设置一个公式,所有的时间往前推3天,并跳过周日。

=A1-OR(WEEKDAY(A1-3)=1,WEEKDAY(A1-2)=1,WEEKDAY(A1-1)=1)-3
公式下拉

首先应当判断这个日期往前推3日后的那个日期是否是星期天,如果不是那么就直接推3天,如果是则推4天,这个可以根据你的实际要求来,那么使用WEEKDAY公式配合IF函数来实现,假设你的日期自A1单元格下来,那么请在B1中输入=IF(WEEKDAY((A1-3),1)=1,A1-4,A1-3)即可!向下填充!

公式计算出来的结果是一串5位数的数据,可以在单元格设置中修改显示为日期或其他的格式!

如果是文字文本格式?无解。
如果是日期格式或数字文本格式,假定日期在a列,在b1输入公式试一试,水平有限公式有点长:
=IF(OR(WEEKDAY(TEXT(DATE(YEAR(A1),MONTH(A1),DAY(A1)-3),"e-mm-dd"),2)=7,WEEKDAY(TEXT(DATE(YEAR(A1),MONTH(A1),DAY(A1)-2),"e-mm-dd"),2)=7,WEEKDAY(TEXT(DATE(YEAR(A1),MONTH(A1),DAY(A1)-1),"e-mm-dd"),2)=7),DATE(YEAR(A1),MONTH(A1),DAY(A1)-4),DATE(YEAR(A1),MONTH(A1),DAY(A1)-3))

补充,楼上两位高手还是忽略了日期往前推一天或推两天就是周日这个问题。
整了一个简单点的,但是必须单元格格式都是日期格式:
=IF(OR(WEEKDAY(A1-1)=7,WEEKDAY(A1-2)=7,WEEKDAY(A1-3)=7),A1-4,A1-3)

数据在A列,
在B1输入=IF(WEEKDAY(A1-3)=1,A1-4,A1-3)回车并向下填充
单元格设置为日期“X月Y日”

1,如果周日只包括星期日:
=TEXT(IF(OR(WEEKDAY(A1-1)=1,WEEKDAY(A1-2)=1,WEEKDAY(A1-3)=1),A1-4,A1-3),"yyyym