如何通过在excel中提供年,月,周数,工作日来获得DATE

时间:2016-05-18 10:19:38

标签: excel excel-formula

我有四个单元格如下,我想将它们组合在一个单元格作为短日期:

A1: Year
A2: Month
A3: Week number 
A4: Week day

现在我想要,excel查看上面的单元格并以短格式告诉我日期。我不想在最终结果中看到日期名称。

举个例子:
A1: 2016
A2:五月
A3: 20
A4:星期三

然后我想得到=>的 2016年5月18日

我感谢任何帮助。

4 个答案:

答案 0 :(得分:1)

试试这个:

=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")功能不起作用。

答案 1 :(得分:1)

=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的日期,当与WEEKNUM和WEEKDAY一起检查时,是第20周和第4天(周三)。

如果您希望日期为16/05/18,当使用WEEKNUM和WEEKDAY检查时是第21周和第4天(周三),则删除-1并使用A3。

概念证明

enter image description here

答案 2 :(得分:0)

试试这个:

=DATE(A1,MONTH(DATEVALUE(A2&" 1")),A3)

你真的需要工作日吗?

答案 3 :(得分:0)

这种简单明了的方法从今年的第一天开始,逐步完成日历,直到找到适当的文本日的正确周数的日期:

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

enter image description here

您可以更改单元格的格式以符合您的需要。
如果您的星期一开始而不是星期日使用: .WeekNum(d,2) 取代: .WeekNum(d)