LinkBack Thread Tools Search this Thread Display Modes
Prev Previous Post   Next Post Next
  #1   Report Post  
Posted to microsoft.public.excel.programming
external usenet poster
 
Posts: 1
Default anyone have any improvements for my Weeks Function?


I just thought I might post this function I created to get what week
number it is if a businesses week starts on a Sunday.

I am a bit of a "hack" programmer and came up with this after days of
trial and error, and would love if any professional out there could let
me know if it is "hilarious" or "ingeniuos" or any improvements anyone
might have.

This works only for the Year 2000 and above (at least to 2100).

Here is the code

Function GetWeeksBeginningSunday()
Dim hold, holdYear, slashPosition, holdMonth, monthAndYearOnly,
holdDay, holdLen As String
Dim intweek, daysUpToCurrent, January, February, March, April, May,
June, July, August, September, October, November, December As Integer
Dim daysBeforeFebruary, daysBeforeMarch, daysBeforeApril,
daysBeforeMay, daysBeforeJune As Integer
Dim daysBeforeJuly, daysBeforeAugust, daysBeforeSeptember,
daysBeforeOctober, daysBeforeNovember, daysBeforeDecember As Integer
Dim decweek As Double
Dim daysLeftInStartofYearWeek, days, i, afterLeapyear As Integer
Dim tempDate As String


tempDate = Date
holdYear = Right(tempDate, 4)
holdYear = holdYear - 2000
holdLen = Len(tempDate)
slashPosition = InStr(1, tempDate, "/", 1)
holdMonth = Left(tempDate, slashPosition - 1)
monthAndYearOnly = Right(tempDate, holdLen - slashPosition)
slashPosition = InStr(1, monthAndYearOnly, "/", 1)
holdDay = Left(monthAndYearOnly, slashPosition - 1)
afterLeapyear = 5


daysLeftInStartofYearWeek = 7
If holdYear = 0 Then
daysLeftInStartofYearWeek = 1
Else

For i = 1 To holdYear
If daysLeftInStartofYearWeek = 1 Then
daysLeftInStartofYearWeek = 8
End If
If i = afterLeapyear Then
afterLeapyear = afterLeapyear + 4
daysLeftInStartofYearWeek = daysLeftInStartofYearWeek - 2
Else
daysLeftInStartofYearWeek = daysLeftInStartofYearWeek - 1
End If

Next i

End If

If holdYear Mod 4 = 0 Then
February = 29
days = 366
Else
February = 28
days = 365
End If

January = 31
March = 31
April = 30
May = 31
June = 30
July = 31
August = 31
September = 30
October = 31
November = 30
December = 31


daysBeforeFebruary = January
daysBeforeMarch = daysBeforeFebruary + February
daysBeforeApril = daysBeforeMarch + March
daysBeforeMay = daysBeforeApril + April
daysBeforeJune = daysBeforeMay + May
daysBeforeJuly = daysBeforeJune + June
daysBeforeAugust = daysBeforeJuly + July
daysBeforeSeptember = daysBeforeAugust + August
daysBeforeOctober = daysBeforeSeptember + September
daysBeforeNovember = daysBeforeOctober + October
daysBeforeDecember = daysBeforeNovember + November

Select Case holdMonth
Case 1
daysUpToCurrent = holdDay
Case 2
daysUpToCurrent = daysBeforeFebruary + holdDay
Case 3
daysUpToCurrent = daysBeforeMarch + holdDay
Case 4
daysUpToCurrent = holdDay + daysBeforeApril
Case 5
daysUpToCurrent = holdDay + daysBeforeMay
Case 6
daysUpToCurrent = holdDay + daysBeforeJune
Case 7
daysUpToCurrent = holdDay + daysBeforeJuly
Case 8
daysUpToCurrent = holdDay + daysBeforeAugust
Case 9
daysUpToCurrent = holdDay + daysBeforeSeptember
Case 10
daysUpToCurrent = holdDay + daysBeforeOctober
Case 11
daysUpToCurrent = holdDay + daysBeforeNovember
Case 12
daysUpToCurrent = holdDay + daysBeforeDecember
End Select

daysUpToCurrent = CInt(daysUpToCurrent)
If daysUpToCurrent <= daysLeftInStartofYearWeek Then
GetWeeksBeginningSunday = 1
Else
decweek = ((daysUpToCurrent - (daysLeftInStartofYearWeek + 1)) / 7) +
2
intweek = CInt(decweek)
If intweek decweek Then
intweek = intweek - 1
End If
GetWeeksBeginningSunday = intweek
End If
End Function


------------------------------------------------
~~ Message posted from http://www.ExcelTip.com/
~~View and post usenet messages directly from http://www.ExcelForum.com/

~~Now Available: Financial Statements.xls, a step by step guide to creating financial statements
 
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Overview Improvements for Excel Worksheets Feda Excel Discussion (Misc queries) 5 September 18th 07 10:08 PM
Weeks of Supply Function jeffbert Excel Worksheet Functions 1 January 31st 07 08:57 PM
Counting Consecutive Improvements SteveC Excel Discussion (Misc queries) 0 June 13th 06 01:35 AM
XY Chart Improvements For Scientific Data Phil Preen Charts and Charting in Excel 3 October 15th 05 04:33 AM
Improvements for text finding functions yarp Excel Discussion (Misc queries) 2 August 8th 05 04:01 PM


All times are GMT +1. The time now is 08:11 PM.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright ©2004-2024 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"