Microsoft Excel에서 VBA를 사용하여 주 시작 날짜를 계산
이 기사에서는 월요일을 요일로 간주하여 특정 주에 대한 첫 번째 날짜를 찾는 사용자 정의 함수 (UDF) 또는 사용자 정의 함수를 만듭니다. 주어진 연도, 월 또는 날짜에서 지정된 주 수 이후주의 첫 번째 날짜를 반환하는 사용자 지정 함수를 만듭니다.
이 기사에서 원시 데이터는 주 번호, 일, 월 및 연도로 구성됩니다.
사용자 정의 기능은 입력 매개 변수로 일, 월, 년 및 주 번호를 갖습니다. 이러한 입력 값을 기반으로 함수는주의 첫날을 반환합니다.
사용자 정의 함수 “WeekStartDate”의 구문은 WeekStartDate (WeekNumber, Year, Month, Day)
월과 일은 선택적 매개 변수입니다.
이 함수는 월요일을 요일로 간주합니다.
WeekStartDate 함수는 Day, Month 및 Year 매개 변수로 지정된 날짜에서 지정된 주 수 이후의 첫 번째 요일을 반환합니다. Day 매개 변수가 지정되지 않은 경우 지정된 연도의 Month 매개 변수로 지정된 월의 지정된 주 수 이후의 첫 번째 요일을 리턴합니다. Month 및 Day 매개 변수를 모두 지정하지 않으면 해당 연도의 지정된주의 첫 번째 요일을 반환합니다.
논리 설명
요일을 찾기 위해 “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]로 문의 해주세요