【日期公式】

请问大家,如何公式实现:

1、当没有碰到月份最后一天时:每周一到周天,显示上周五的日期(如下图黄色和绿色);DATEINWEEK(today(), -2)

2、当碰到月份最后一天时:月份第1天到第一个周天,显示上月最后一天的日期(如下图红色)

image.png

FineReport ran1025 发布于 2022-11-7 11:38
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
用户k6280494Lv6资深互助
发布于2022-11-7 11:50(编辑于 2022-11-7 15:00)

if(TODAY()=DATEINMONTH(TODAY(),-1),DATEINMONTH(MONTHDELTA(TODAY(),-1),-1),DATEDELTA(DATEINWEEK(today(),5),-7))

修改后

if(INARRAY(WEEK(TODAY()), UNIQUEARRAY(MAPARRAY(RANGE(DATEINMONTH(TODAY(), 1), DATEINMONTH(TODAY(), -1)), WEEK(ITEM))))=1,DATEINMONTH(MONTHDELTA(TODAY(),-1),-1),if(or(weekday(today())=0,weekday(today())=6),"",DATEDELTA(DATEINWEEK(today(),5),-7)))

公式解释

INARRAY(WEEK(TODAY()), UNIQUEARRAY(MAPARRAY(RANGE(DATEINMONTH(TODAY(), 1), DATEINMONTH(TODAY(), -1)), WEEK(ITEM)))) 第几周 第一周就返回上个月最后一天,

or(weekday(today())=0,weekday(today())=6) 周六日 不是周六日 就返回上周五

测试了一下,有的地方不需要转,有的又需要 有点怪

if(INARRAY(WEEK("20220703"), UNIQUEARRAY(MAPARRAY(RANGE(DATEINMONTH("20220703", 1), DATEINMONTH("20220703", -1)), WEEK(ITEM))))=1,DATEINMONTH(MONTHDELTA("2022-07-03",-1),-1),if(or(weekday("20220703")=0,weekday("20220703")=6),"",DATEDELTA(DATEINWEEK("2022-07-03",5),-7)))

修改

if(ROUNDUP((DAY("2022-06-12") + (IF(WEEKDAY(DATEINMONTH("2022-06-12", 1)) = 0, 7, WEEKDAY(DATEINMONTH("2022-06-12", 1)))) - 1) / 7, 0)=1,DATEINMONTH(MONTHDELTA("2022-06-12",-1),-1),if(or(weekday("2022-06-12")=0,weekday("2022-06-12")=6),"",DATEDELTA(DATEINWEEK("2022-06-12",5),-7)))

  • ran1025 ran1025(提问者) 好像不太对。比如20221202 应该显示20221130,这个公式显示的20221125~~
    2022-11-07 12:04 
  • 用户k6280494 用户k6280494 回复 ran1025(提问者) 我这个判断的是不是月末最后一天,是最后一天才显示上月最后一天,不是最后一天显示上周五
    2022-11-07 13:04 
  • 用户k6280494 用户k6280494 回复 ran1025(提问者) 看修改后的
    2022-11-07 13:13 
  • ran1025 ran1025(提问者) 回复 用户k6280494 谢谢。但我看20220703来看公式好像没有结果?
    2022-11-07 14:22 
  • 用户k6280494 用户k6280494 回复 ran1025(提问者) 把时间格式化一下,兄弟,20220703变成2022-07-03,FORMAT(\"20220703\",\"yyyy-MM-dd\")
    2022-11-07 14:28 
最佳回答
0
CD20160914Lv8专家互助
发布于2022-11-7 12:40

没有太明白你的需求。。。举例说明结果吧。为什么是这样的结果,红黄的内容完全没有看懂 为什么2022-12-02是显示2022-11-30?。12-01的时候又显示什么?11-30的时候又显示什么?没有太明白你的计算逻辑

  • ran1025 ran1025(提问者) 是因为一个报表的更新逻辑:正常每周一更新截至上周五数据;如果遇到1号 就更新截至上月整月,这样
    2022-11-07 14:11 
  • ran1025 ran1025(提问者) 12-01显示截至到20221130的数据。11-30显示截至到1125
    2022-11-07 14:12 
  • CD20160914 CD20160914 回复 ran1025(提问者) 那你看上面那位给你的是不是正确的
    2022-11-07 14:14 
  • 3关注人数
  • 419浏览人数
  • 最后回答于:2022-11-7 15:00
    请选择关闭问题的原因
    确定 取消
    返回顶部