判断日期是一个月的第几周公式问题

我们是以星期日为一周的起始,查了二组公式执行起来都有些瑕疵

WEEK(B3) - WEEK(DATE(YEAR(B3), MONTH(B3), 1)) + 1 (红字)

or

WEEK(B3) - WEEK(DATEINMONTH(B3, 1)) + 1 (蓝字)

↑这组因为WEEK()这公式在1/1会算在去年的周数,一月就变负数了

ROUNDUP((DAY(B3) + (IF(WEEKDAY(DATEINMONTH(B3, 1)) = 0, 7, WEEKDAY(DATEINMONTH(B3, 1))))) / 7, 0) (绿字)

↑这组的2020/3月,第一周变成第二周了

我公式要怎么修正才能取得最正确的周数啊

算周数.cpt

pic-304.png

FineReport akahime 发布于 2020-9-23 14:59
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
张洪威Lv6高级互助
发布于2020-9-23 15:32

用这个公式,A1换成你的日期单元格,就可以避免跨年的问题了。

=INARRAY(WEEK(A1), UNIQUEARRAY(MAPARRAY(RANGE(DATEINMONTH(A1, 1), DATEINMONTH(A1, -1)), WEEK(ITEM))))


image.png

最佳回答
0
snrtuemcLv8专家互助
发布于2020-9-23 15:00

获取日期在当月中是第几周-https://help.fanruan.com/finereport/doc-view-2596.html


  • akahime akahime(提问者) 这我都查过了,也用了,公式就在上头但仍有算不准的问题啊
    2020-09-23 15:05 
最佳回答
0
指间沙Lv6中级互助
发布于2020-9-23 15:07(编辑于 2020-9-23 15:19)

有个问题,那你们是怎么定义跨月的。上个月一些周末到下个月,周日在下个月,要怎么算?


case 

when (create_date) is NULL then ''

when cast(day(create_date) as float)/7=1 and cast(day(create_date) as int)%7=0 then CAST(MONTH(create_date) as VARCHAR(10))+ '月第1周'

when cast(day(create_date) as float)/7=2 and cast(day(create_date) as int)%7=0 then CAST(MONTH(create_date) as VARCHAR(10))+'月第2周'

when cast(day(create_date) as float)/7=3 and cast(day(create_date) as int)%7=0 then CAST(MONTH(create_date) as VARCHAR(10))+'月第3周'

when cast(day(create_date) as float)/7=4 and cast(day(create_date) as int)%7=0 then CAST(MONTH(create_date) as VARCHAR(10))+'月第4周'

when cast(day(create_date) as float)/7<1 then CAST(MONTH(create_date) as VARCHAR(10))+'月第1周'

when cast(day(create_date) as float)/7>1 and cast(day(create_date) as float)/7<2 then CAST(MONTH(create_date) as VARCHAR(10))+'月第2周'

when cast(day(create_date) as float)/7>2 and cast(day(create_date) as float)/7<3 then CAST(MONTH(create_date) as VARCHAR(10))+'月第3周'

when cast(day(create_date) as float)/7>3 and cast(day(create_date) as float)/7<4 then CAST(MONTH(create_date) as VARCHAR(10))+'月第4周'

else CAST(MONTH(create_date) as VARCHAR(10))+'月第5周'

end as week

这个是从1号开始,一周7天的算法。sql server,具体的看着修改。

  • akahime akahime(提问者) 我的表是是月看里头的周数呢,无所谓的跨月,像8月的表印出来就有6周,接着9月9/1~9/5就是9月的第一周啊,都分开的
    2020-09-23 15:14 
  • 指间沙 指间沙 回复 akahime(提问者) 那就是从每月的1号开始是吗?7天一周?
    2020-09-23 15:17 
  • akahime akahime(提问者) 回复 指间沙 也不是7天都一周呢,是日历周啊,从星期日开始算,9/1在周二,所以9/1~5是第一周,遇到周日就换下一周了,9/6起是9月第二周,现有公式算出来大至是对的,但有特定几个月会出现瑕疵
    2020-09-23 15:21 
  • 4关注人数
  • 1049浏览人数
  • 最后回答于:2020-9-23 15:32
    请选择关闭问题的原因
    确定 取消
    返回顶部