In diesem Artikel erstellen wir eine benutzerdefinierte Funktion (UDF) oder eine benutzerdefinierte Funktion, um das erste Datum für eine bestimmte Woche zu ermitteln, wobei Montag als erster Wochentag betrachtet wird. Wir erstellen eine benutzerdefinierte Funktion, die das erste Datum der Woche nach der angegebenen Anzahl von Wochen aus dem angegebenen Jahr, Monat oder Datum zurückgibt.

In diesem Artikel bestehen die Rohdaten aus Wochennummer, Tag, Monat und Jahr.

Die benutzerdefinierte Funktion hat die Nummer für Tag, Monat, Jahr und Woche als Eingabeparameter. Basierend auf diesen Eingabewerten gibt die Funktion den ersten Tag der Woche zurück.

ArrowRawData

Die Syntax für die benutzerdefinierte Funktion „WeekStartDate“ lautet WeekStartDate (WeekNumber, Year, Month, Day)

Monat und Tag sind optionale Parameter.

Diese Funktion setzt Montag als ersten Tag der Woche voraus.

Die WeekStartDate-Funktion gibt den ersten Wochentag nach der angegebenen Anzahl von Wochen ab dem durch den Parameter Tag, Monat und Jahr angegebenen Datum zurück. Wenn der Parameter Tag nicht angegeben ist, wird der erste Wochentag nach der angegebenen Anzahl von Wochen in dem Monat zurückgegeben, der durch den Parameter Monat des angegebenen Jahres angegeben ist. Wenn sowohl der Monat- als auch der Tag-Parameter nicht angegeben sind, wird der erste Tag der angegebenen Woche des Jahres zurückgegeben.

ArrowOutput

Logische Erklärung

Wir haben die benutzerdefinierte Funktion „WeekStartDate“ erstellt, um den ersten Tag der Woche zu ermitteln. Die für diese Funktion verwendete Logik lautet: Wenn der Wochentag des angegebenen Datums kleiner als 4 ist, wird die aktuelle Woche als erste Woche betrachtet. Andernfalls wird die nächste Woche als erste Woche betrachtet, wenn der Wochentag des angegebenen Datums größer als 4 ist.

Code Erklärung

DateSerial (intYear, intMonth, intDay)

Die DateSerial-Funktion wird verwendet, um das Datum aus dem Wert von Tag, Monat und Jahr abzurufen.

Wochentag (FromDate, vbMonday)

Die Wochentagsfunktion wird verwendet, um den Wochentag für das Datum abzurufen, wobei Montag als erster Wochentag betrachtet wird.

Wenn WKDay> 4, dann WDays = (7 intWeek) – WKDay + 1 Else WDays = (7 (intWeek – 1)) – WKDay + 1 End If Above Code wird verwendet, um die Anzahl der Tage zu ermitteln, die eingeschlossen werden müssen, um das erste Datum zu finden der Woche. Wenn der Wert für den Wochentag weniger als 4 beträgt, wird die aktuelle Woche als erste Woche betrachtet. Deshalb haben wir 1 subtrahiert, d. H.

(intWeek – 1). 1 wird hinzugefügt, da wir den ersten Tag der Woche finden möchten.

Bitte folgen Sie unten für den Code

Option Explicit

Function WeekStartDate(intWeek As Integer, intYear As Integer, Optional intMonth As Integer = 1, Optional intDay As Integer = 1)

'Declaring variables

Dim FromDate As Date, lngAdd As Long

Dim WKDay, WDays As Integer

WDays = 0

'Checking that year should not have negative value

If intYear < 1 Then

WeekStartDate = "Year cann't have negative value"

Exit Function

End If

'Calculating the date

FromDate = DateSerial(intYear, intMonth, intDay)

'Getting the week day of the specified date considering monday as first day

WKDay = Weekday(FromDate, vbMonday)

'If value of week day is less than 4 then subtracting 1 from the week number

If WKDay > 4 Then

WDays = (7 * intWeek) - WKDay + 1

Else

WDays = (7 * (intWeek - 1)) - WKDay + 1

End If

'Return the first day of the week

WeekStartDate = FromDate + WDays



End Function

Wenn dir dieser Blog gefallen hat, teile ihn mit deinen Freunden auf Facebook und Facebook.

Wir würden gerne von Ihnen hören, lassen Sie uns wissen, wie wir unsere Arbeit verbessern und für Sie verbessern können. Schreiben Sie uns unter [email protected]