ACTEBS
actebs at actebs.com.au
Thu Jun 19 11:57:20 CDT 2003
Guys, Sorry I should have explained myself better I was assuming that January 1st was a Monday etc etc. Here is a cool solution I found at http://www.cpearson.com/excel/DateTimeVBA.htm Does what I need: Public Function YearStart(WhichYear As Integer) As Date Dim WeekDay As Integer Dim NewYear As Date NewYear = DateSerial(WhichYear, 1, 1) WeekDay = (NewYear - 2) Mod 7 'Generate weekday index where Monday = 0 If WeekDay < 4 Then YearStart = NewYear - WeekDay Else YearStart = NewYear - WeekDay + 7 End If End Function Public Function ISOWeekNum(AnyDate As Date, Optional WhichFormat As Variant) As Integer ' WhichFormat: missing or <> 2 then returns week number, ' = 2 then YYWW ' Dim ThisYear As Integer Dim PreviousYearStart As Date Dim ThisYearStart As Date Dim NextYearStart As Date Dim YearNum As Integer ThisYear = Year(AnyDate) ThisYearStart = YearStart(ThisYear) PreviousYearStart = YearStart(ThisYear - 1) NextYearStart = YearStart(ThisYear + 1) Select Case AnyDate Case Is >= NextYearStart ISOWeekNum = (AnyDate - NextYearStart) \ 7 + 1 YearNum = Year(AnyDate) + 1 Case Is < ThisYearStart ISOWeekNum = (AnyDate - PreviousYearStart) \ 7 + 1 YearNum = Year(AnyDate) - 1 Case Else ISOWeekNum = (AnyDate - ThisYearStart) \ 7 + 1 YearNum = Year(AnyDate) End Select If IsMissing(WhichFormat) Then Exit Function If WhichFormat = 2 Then ISOWeekNum = CInt(Format(Right(YearNum, 2), "00") & _ Format(ISOWeekNum, "00")) End If End Function Thanks for everyones suggestions... Regards Vlad -----Original Message----- From: accessd-bounces at databaseadvisors.com [mailto:accessd-bounces at databaseadvisors.com] On Behalf Of Gustav Brock Sent: Friday, 20 June 2003 1:27 AM To: accessd at databaseadvisors.com Subject: Re: [AccessD] Week of the Month Hi Vlad Are you sure about this? Normally, an ISO standard, a week runs from Monday to Sunday (except in the US where they start the week in the middle of the weekend - go figure). The DatePart() function and Weekday() will give the week and weekdays if that is what you need (so you say). DatePart() is a little buggy around week 52 but that won't probably be of importance to you. /gustav > Does anyone know of a method to work out what week it is of the month. > For example, you have a range of dates 1st January to 31st March. The > 1st to the 7th is the 1st week of January and the 8th to the 14th is > the second etc etc... > I have 2.5 years of data (about 1 Million rows) from an old main frame > system and we are trying to determine the frequency of delivery to > each customer on a per monthly basis. So effectively to say customer > Jim Spanner the client delivers every second Thursday for February. Is > there an elegant method of working this out? I have the date the > delivery was carried out for the past 2.5 years, but am having > difficulty working out how I could manufacture a frequency pattern. > Is there any method anyone could suggest, that I could explore... _______________________________________________ AccessD mailing list AccessD at databaseadvisors.com http://databaseadvisors.com/mailman/listinfo/accessd Website: http://www.databaseadvisors.com