从vba中的周值获取月值

时间:2018-06-07 10:20:25

标签: excel vba excel-vba

我想从周号获得月份值

假设一个星期是两个月共享,那么我需要两个月

实施例
当输入第30周时,结果应该是第7个月 如果第31周 - 这是一个共享周,它应该返回第7个月(2天)& 8(3天)

7月的2周工作日和8月的3个工作日

我尝试了对我没用的datepart方法

dyWk = DatePart( "w", #07/31/2018# ) // Here date as input

2 个答案:

答案 0 :(得分:1)

link开始,您可以在C2中使用

开始一周的开始
=DATE(A2, 1, -2) - WEEKDAY(DATE(A2, 1, 3)) + B2 * 7

和周末,在D2

=DATE(A2, 1, -2) - WEEKDAY(DATE(A2, 1, 3)) + B2 * 7  +6

然后分别在C3D3中获取每个返回日期的月份

=MONTH(C2)  and =MONTH(D2)

并使用

E3中进行明确计数
=SUMPRODUCT(1/COUNTIF(C3:D3,C3:D3))

数据

Data

请注意

这是基于ISO周数。

每月的几天

C4=EOMONTH(C2,0)-C2+1D4IF(C3<>D3,D2-EOMONTH(D2,-1),)

答案 1 :(得分:1)

你的问题有点含糊不清,但是这会给你什么吗?

week = 30
year_to_use = 2018
month_at_start_of_week = Month(DateAdd("ww", week - 1, DateSerial(year_to_use, 1, 1)))
month_at_end_of_week = Month(DateAdd("ww", week, DateSerial(year_to_use, 1, 1) - 1))

当周= 30时,你得到:

month_at_start_of_week = 7 
month_at_end_of_week = 7

当周= 31时,你得到:

month_at_start_of_week = 7 
month_at_end_of_week = 8