이 기사에서는 월요일을 요일로 간주하여 특정 주에 대한 첫 번째 날짜를 찾는 사용자 정의 함수 (UDF) 또는 사용자 정의 함수를 만듭니다. 주어진 연도, 월 또는 날짜에서 지정된 주 수 이후주의 첫 번째 날짜를 반환하는 사용자 지정 함수를 만듭니다.

이 기사에서 원시 데이터는 주 번호, 일, 월 및 연도로 구성됩니다.

사용자 정의 기능은 입력 매개 변수로 일, 월, 년 및 주 번호를 갖습니다. 이러한 입력 값을 기반으로 함수는주의 첫날을 반환합니다.

ArrowRawData

사용자 정의 함수 “WeekStartDate”의 구문은 WeekStartDate (WeekNumber, Year, Month, Day)

월과 일은 선택적 매개 변수입니다.

이 함수는 월요일을 요일로 간주합니다.

WeekStartDate 함수는 Day, Month 및 Year 매개 변수로 지정된 날짜에서 지정된 주 수 이후의 첫 번째 요일을 반환합니다. Day 매개 변수가 지정되지 않은 경우 지정된 연도의 Month 매개 변수로 지정된 월의 지정된 주 수 이후의 첫 번째 요일을 리턴합니다. Month 및 Day 매개 변수를 모두 지정하지 않으면 해당 연도의 지정된주의 첫 번째 요일을 반환합니다.

ArrowOutput

논리 설명

요일을 찾기 위해 “WeekStartDate”사용자 지정 함수를 만들었습니다. 이 기능에 사용되는 논리는 주어진 날짜의 요일이 4 미만이면 현재 주가 첫 번째 주로 간주된다는 것입니다. 그렇지 않으면 주어진 날짜의 요일이 4보다 크면 다음 주가 첫 번째 주로 간주됩니다.

코드 설명

DateSerial (intYear, intMonth, intDay)

DateSerial 함수는 일, 월 및 연도 값에서 날짜를 가져 오는 데 사용됩니다.

Weekday (FromDate, vbMonday)

Weekday 함수는 월요일을 요일로 간주하여 날짜의 요일을 가져 오는 데 사용됩니다.

If WKDay> 4 Then WDays = (7 intWeek)-WKDay + 1 Else WDays = (7 (intWeek-1))-WKDay + 1 End If Above 코드는 첫 번째 날짜를 찾기 위해 포함 할 일 수를 찾는 데 사용됩니다. 금주의. 요일 값이 4보다 작 으면 현재주는 첫 번째 주로 간주됩니다. 이것이 우리가 1을 뺀 이유입니다.

(intWeek-1). 요일을 찾고자하므로 1이 추가됩니다.

아래 코드를 따르세요

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

이 블로그가 마음에 들면 Facebook 및 Facebook에서 친구들과 공유하십시오.

여러분의 의견을 듣고 싶습니다. 작업을 개선하고 더 나은 서비스를 제공 할 수있는 방법을 알려주십시오. [email protected]로 문의 해주세요