在excel中创建一周的第1天,第2天或第3天的日期

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在excel中创建一周的第1天,第2天或第3天的日期相关的知识,希望对你有一定的参考价值。

我需要确定给定数字的星期几,

例如我有年= 2018日历周= 51和数字= 3(这是一周的第3天)

日历周51在12月份下降

周从周一到周日开始

由于第51周的第3天是19日,结果应该是“19/12/2018”。

我们可以做excel公式或VBA宏。

在这方面的任何帮助深表赞赏。

谢谢,Ganesh

答案

here公然复制你可以使用Excel公式:

=DATE(<YearNumber>, 1, -2) - WEEKDAY(DATE(<YearNumber>, 1, 3)) + <WeekNumber> * 7+ <DayNumber> -1   

所以=DATE(2018, 1, -2) - WEEKDAY(DATE(2018, 1, 3)) + 51 * 7 + 3 - 1将于2018年12月19日回归。

另一答案

它是由vba获得的。一个是宏,一个是udf。

Sub getWeekDays()
    Dim vDB, vS(), vR()
    Dim y As Integer, s As Date, e As Date
    Dim i As Integer, k As Integer
    Dim n As Integer
    'y = Year
    y = InputBox("Input year : 2018  ")

    s = DateSerial(y, 1, 0)
    e = DateSerial(y + 1, 1, 0)
    n = e - s
    For i = 1 To n
        d = s + i
        If DatePart("ww", d, vbMonday) = DatePart("ww", d + 1, vbMonday) Then
        Else
            k = k + 1
            ReDim Preserve vR(1 To 2, 1 To k)
            vR(1, k) = DatePart("ww", d, vbMonday) & " Wk"
            If k = 1 Then
                vR(1, k) = DatePart("ww", s + 1, vbMonday) & " Wk"
                vR(2, k) = Format(s + 1, "dd.mm.yyyy") & "~" & Format(d, "dd.mm.yyyy")
            Else
                vR(2, k) = Format(d - 6, "dd.mm.yyyy") & "~" & Format(d, "dd.mm.yyyy")
            End If
        End If
    Next i
    Range("a1").CurrentRegion.Clear
    Range("a1").Resize(k, 2) = WorksheetFunction.Transpose(vR)
End Sub

UDF

Function getWeekDay(y As Integer, WeekNum As Integer, DayOrder As Integer)
    Dim s As Date, e As Date
    Dim i As Integer
    Dim n As Integer
    Application.Volatile
    'WeekNum = 51
    'y = Year
    'DayOrder <~~ If third day  DayOrder = 3

    s = DateSerial(y, 1, 0)
    e = DateSerial(y + 1, 1, 0)
    n = e - s
    For i = 1 To n
        d = s + i

        If DatePart("ww", d, vbMonday) = WeekNum Then
            getWeekDay = d + DayOrder - 1
            Exit Function
        End If
    Next i
End Function

enter image description here

以上是关于在excel中创建一周的第1天,第2天或第3天的日期的主要内容,如果未能解决你的问题,请参考以下文章

SQL语句 如何取得指定月份的最后一天的日期

如何将星期天设置为excel对周计算的第一天。

检查日期是不是存在(第 30 天/第 31 天)[重复]

如何跳过 ARIMA 模型(python)中的第一个滞后 N 天?

如何在mysql数据库中取得每月第一天和最后一天之间的数据?

Excel中如何计算日期所在的这年的第几周,以周一作为一周的第一天