Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 周数和年组合_Excel - Fatal编程技术网

Excel 周数和年组合

Excel 周数和年组合,excel,Excel,过去在Excel中的Weeknumber和Year上有几个问题被问过,但是,我有一个具体的问题,我找不到答案 我正在尝试以YYWW的格式获取年和周的组合,例如1752或1801,基于带有日期的列,类似这样: Date Year Week 01-01-2018 18 01 02-01-2018 18 01 ... 31-12-2018 18 01 只需在日期上使用Year函数确定年份,在日期上使用ISOWEEKNUM函数确定周数。 然后进行进一步处

过去在Excel中的Weeknumber和Year上有几个问题被问过,但是,我有一个具体的问题,我找不到答案

我正在尝试以YYWW的格式获取年和周的组合,例如1752或1801,基于带有日期的列,类似这样:

Date         Year  Week
01-01-2018   18    01
02-01-2018   18    01
...
31-12-2018   18    01
只需在日期上使用
Year
函数确定年份,在日期上使用
ISOWEEKNUM
函数确定周数。 然后进行进一步处理,根据年份和周数对数据求和,问题是2018年第1周也考虑了2018年12月31日的数据,而12月31日显然不是2018年第1周,而是2019年第1周

所以问题是,我怎样才能“修复”这个问题,那么我怎样才能让Excel在2018年12月31日给我19分和01分呢?理想情况下,我正在寻找一个解决方案,不涉及任何VBA


非常感谢您的帮助

最后,多亏了Nick和ImaginaryHuman072889的反馈,我修复了它如下:

Date         Year  Week
01-01-2018   18    01
02-01-2018   18    01
...
31-12-2018   18    01
=年(A1)+如果(和(月(A1)=12;等周数(A1)=1);1;0)+如果(和(月(A1)=1;等周数>=52);-1;0)


为了可读性,我不喜欢嵌套
IF
语句,因为它们无论如何都不会同时生成
TRUE

因此,最后,感谢Nick和ImaginaryHuman072889的反馈,我这样修复了它:

Date         Year  Week
01-01-2018   18    01
02-01-2018   18    01
...
31-12-2018   18    01
=年(A1)+如果(和(月(A1)=12;等周数(A1)=1);1;0)+如果(和(月(A1)=1;等周数>=52);-1;0)


为了可读性,我不喜欢嵌套
IF
语句,因为它们无论如何都不会在同一时间产生
TRUE

对于
ISO
周数,每周的周四将始终在“isoweekyear”范围内,因此对于任何日期,要获得正确的年份,只需找到该周星期四的年份即可。您可以这样做:

Date         Year  Week
01-01-2018   18    01
02-01-2018   18    01
...
31-12-2018   18    01

=年(A1+3-工作日(A1;3))

对于
ISO
周数,每周的星期四将始终在“isoweekyear”范围内,因此对于任何日期,要获得正确的年份,只需找到该周星期四的年份即可。您可以这样做:

Date         Year  Week
01-01-2018   18    01
02-01-2018   18    01
...
31-12-2018   18    01

=年(A1+3-工作日(A1;3))

如果月=12且ISOWEEKNUM=1使用年+1,您是否可以尝试一个有条件的方法?同意@Nick。类似于
=YEAR(A1)+IF(AND(MONTH(A1)=12,ISOWEEKNUM(A1)=1,0)
@Nick:是的,那肯定会有用。但我现在意识到,我的问题应该比我提出的更一般。2016年1月1日是2015年第53周。假设我想使用一个通用公式,那么如何解决这个问题呢?添加一个ELSE IF条件来检查MONTH=1和ISOWEEKNUM=53使用YEAR-1。扩展@ImaginaryHuman072889的示例:年(A1)+如果(和(月(A1)=12,ISOWEEKNUM(A1)=1),1,如果(和(月(A1)=1,ISOWEEKNUM(A1)=53),-1,0)),您是否可以尝试一个有条件的如果月=12,ISOWEEKNUM=1使用年+1?同意@Nick。类似于
=YEAR(A1)+IF(AND(MONTH(A1)=12,ISOWEEKNUM(A1)=1,0)
@Nick:是的,那肯定会有用。但我现在意识到,我的问题应该比我提出的更一般。2016年1月1日是2015年第53周。假设我想使用一个通用公式,那么如何解决这个问题呢?添加一个ELSE IF条件来检查MONTH=1和ISOWEEKNUM=53使用YEAR-1。扩展@ImaginaryHuman072889的例子:年(A1)+IF(和(月(A1)=12,等周数(A1)=1),1,IF(和(月(A1)=1,等周数(A1)=53),-1,0))称我为老式,但如果嵌套可以避免重复执行,我喜欢嵌套。稍微短一点:
=YEAR(A1)+IF(月(A1)=12;等周数(A1)=1;-(等周数(A1)>=52))
。注意,
IF
语句的else子句中的
0
是不必要的,因为默认的else值是
FALSE
,当转换成一个数字时,它是0。称我为老式的,但如果它避免了重复执行,我喜欢嵌套。稍微短一点:
=YEAR(A1)+IF(MONTH(A1)=12;ISOWEEKNUM(A1)=1;-(ISOWEEKNUM(A1)>=52))
。注意
IF
语句的else子句中的
0
是不必要的,因为默认的else值是
FALSE
,当转换为数字时,它是0。现在这正是我正在寻找的智能解决方案,非常感谢!现在,这正是我正在寻找的智能解决方案,非常感谢!