如何通过在Excel中提供年,月,周数,工作日来获得DATE
我有如下四个单元格,我想在一个单元格中将它们合并为一个短date:
A1: Year A2: Month A3: Week number A4: Week day
现在我想要,excel看上面的单元格,并以短格式告诉我date。 我不想在最终结果中看到date名称。
举个例子:
A1: 2016
A2: 五月
A3: 20
A4: 星期三
那么我想要=> 18.05.2016
我感谢任何帮助。
=DATE(A1,1,1)+7*(A3-1)+MATCH(A4,{"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"},0)-WEEKDAY(DATE(A1,1,1)+7*(A3-1))
以上将会给你一个16/05/11的date,当你和WEEKNUM和WEEKDAY进行核实的时候是星期三的第20周和第4天。
如果您希望date为16/05/18,那么在使用WEEKNUM和WEEKDAY进行核对时是第21周和第4周的第4天(星期三),然后删除-1,然后使用A3。
概念validation
尝试这个:
=DATE(A$1,1,-6)-WEEKDAY(DATE(A$1,1,1),2)+A3*7+CHOOSE(IF(A4="Monday",1,IF(A4="Tuesday",2,IF(A4="Wednesday",3,IF(A4="Thursday",4,If(A4="Friday",5,if(A4="Saturday",6,IF(A4="Sunday",7,0))))))),1,2,3,4,5,6,7)
A1
=年, A3
=周, A4
=平日
对不起,忘了Text(,"d")
function不起作用。
尝试这个:
=DATE(A1,MONTH(DATEVALUE(A2&" 1")),A3)
你真的需要工作日吗?
这种头脑简单的方法从今年的第一个开始,逐步浏览日历,直到它find适当的星期和适当的文本date:
Public Function INeedADate(yr As Long, wkmn As Long, dy As String) As Date Dim i As Long, dtStart As Date, d As Date Dim x As String x = LCase(dy) dtStart = DateSerial(yr, 1, 1) With Application.WorksheetFunction For i = 0 To 400 d = dtStart + i If .WeekNum(d) = wkmn And LCase(Format(d, "dddd")) = x Then INeedADate = d Exit Function End If Next i End With End Function
您可以更改单元格的格式以符合您的需求。
如果星期一开始而不是星期天,则使用: .WeekNum(d,2)
代替: .WeekNum(d)