如何通过在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)