I am trying to calculate load factor for a data table that changes monthly in access. For those who are unfamaliar with calculating Load Factor, the formula is: kwh/(kw*(days in month) *24)
My data is rolling over 24 months and I calculate the data quarterly. For the first quarter this is my code.
I have 4 functions (1 for each quarter), my last quarter is
I would like to consolidate my code to this
I used the above code for simple functions like adding, but the load factor requires more math and I am not sure how to institute it, any ideas?
My data is rolling over 24 months and I calculate the data quarterly. For the first quarter this is my code.
Code:
Function FirstQtrLFMth1to12(dThisMonth As Date, AKWH1 As Long, AKWH2 As Long, AKWH3 As Long, _
AKWH4 As Long, AKWH5 As Long, AKWH6 As Long, AKWH7 As Long, AKWH8 As Long, AKWH9 As Long, _
AKWH10 As Long, AKWH11 As Long, AKWH12 As Long, AKW1 As Long, AKW2 As Long, AKW3 As Long, _
AKW4 As Long, AKW5 As Long, AKW6 As Long, AKW7 As Long, AKW8 As Long, AKW9 As Long, _
AKW10 As Long, AKW11 As Long, AKW12 As Long) As Long
Dim sDate As String
Dim sYear As String
sYear = CStr(Year([dThisMonth]))
sDate = Month([dThisMonth]) & "/1/" & sYear
Select Case sDate
Case "1/1/" & sYear
FirstQtrLFMth1to12 = (AKWH1 / (AKW1 * DaysM("1/1/" & sYear) * 24))
Case "2/1/" & sYear
FirstQtrLFMth1to12 = ((AKWH2 / (AKW2 * DaysM("2/1/" & sYear) * 24)) _
+ (AKWH1 / (AKW1 * DaysM("1/1/" & sYear) * 24))) / 2
Case "3/1/" & sYear
FirstQtrLFMth1to12 = ((AKWH3 / (AKW3 * DaysM("3/1/" & sYear) * 24)) _
+ (AKWH2 / (AKW2 * DaysM("2/1/" & sYear) * 24)) _
+ (AKWH1 / (AKW1 * DaysM("1/1/" & sYear) * 24))) / 3
Case "4/1/" & sYear
FirstQtrLFMth1to12 = ((AKWH4 / (AKW4 * DaysM("4/1/" & sYear) * 24)) _
+ (AKWH3 / (AKW3 * DaysM("3/1/" & sYear) * 24)) _
+ (AKWH2 / (AKW2 * DaysM("2/1/" & sYear) * 24))) / 3
Case "5/1/" & sYear
FirstQtrLFMth1to12 = ((AKWH5 / (AKW5 * DaysM("5/1/" & sYear) * 24)) _
+ (AKWH4 / (AKW4 * DaysM("4/1/" & sYear) * 24)) _
+ (AKWH3 / (AKW3 * DaysM("3/1/" & sYear) * 24))) / 3
Case "6/1/" & sYear
FirstQtrLFMth1to12 = ((AKWH6 / (AKW6 * DaysM("6/1/" & sYear) * 24)) _
+ (AKWH5 / (AKW5 * DaysM("5/1/" & sYear) * 24)) _
+ (AKWH4 / (AKW4 * DaysM("4/1/" & sYear) * 24))) / 3
Case "7/1/" & sYear
FirstQtrLFMth1to12 = ((AKWH7 / (AKW7 * DaysM("7/1/" & sYear) * 24)) _
+ (AKWH6 / (AKW6 * DaysM("6/1/" & sYear) * 24)) _
+ (AKWH5 / (AKW5 * DaysM("5/1/" & sYear) * 24))) / 3
Case "8/1/" & sYear
FirstQtrLFMth1to12 = ((AKWH8 / (AKW8 * DaysM("8/1/" & sYear) * 24)) _
+ (AKWH7 / (AKW7 * DaysM("7/1/" & sYear) * 24)) _
+ (AKWH6 / (AKW6 * DaysM("6/1/" & sYear) * 24))) / 3
Case "9/1/" & sYear
FirstQtrLFMth1to12 = ((AKWH9 / (AKW9 * DaysM("9/1/" & sYear) * 24)) _
+ (AKWH8 / (AKW8 * DaysM("8/1/" & sYear) * 24)) _
+ (AKWH7 / (AKW7 * DaysM("7/1/" & sYear) * 24))) / 3
Case "10/1/" & sYear
FirstQtrLFMth1to12 = ((AKWH10 / (AKW10 * DaysM("10/1/" & sYear) * 24)) _
+ (AKWH9 / (AKW9 * DaysM("9/1/" & sYear) * 24)) _
+ (AKWH8 / (AKW8 * DaysM("8/1/" & sYear) * 24))) / 3
Case "11/1/" & sYear
FirstQtrLFMth1to12 = ((AKWH11 / (AKW11 * DaysM("11/1/" & sYear) * 24)) _
+ (AKWH10 / (AKW10 * DaysM("10/1/" & sYear) * 24)) _
+ (AKWH9 / (AKW9 * DaysM("9/1/" & sYear) * 24))) / 3
Case "12/1/" & sYear
FirstQtrLFMth1to12 = ((AKWH12 / (AKW12 * DaysM("12/1/" & sYear) * 24)) _
+ (AKWH11 / (AKW11 * DaysM("11/1/" & sYear) * 24)) _
+ (AKWH10 / (AKW10 * DaysM("10/1/" & sYear) * 24))) / 3
Case Else
FirstQtrLFMth1to12 = 0
End Select
End Function
I have 4 functions (1 for each quarter), my last quarter is
Code:
Function FourthQtrLFMth1to12(dThisMonth As Date, AKWH1 As Long, AKWH2 As Long, AKWH3 As Long, _
AKW1 As Long, AKW2 As Long, AKW3 As Long)
Dim sDate As String
Dim sYear As String
sYear = CStr(Year([dThisMonth]))
sDate = Month([dThisMonth]) & "/1/" & sYear
Select Case sDate
Case "10/1/" & sYear
FourthQtrLFMth1to12 = (AKWH1 / (AKW1 * DaysM("10/1/" & sYear) * 24))
Case "11/1/" & sYear
FourthQtrLFMth1to12 = ((AKWH2 / (AKW2 * DaysM("11/1/" & sYear) * 24)) _
+ (AKWH1 / (AKW1 * DaysM("10/1/" & sYear) * 24))) / 2
Case "12/1/" & sYear
FourthQtrLFMth1to12 = ((AKWH3 / (AKW3 * DaysM("12/1/" & sYear) * 24)) _
+ (AKWH2 / (AKW2 * DaysM("11/1/" & sYear) * 24)) _
+ (AKWH1 / (AKW1 * DaysM("10/1/" & sYear) * 24))) / 3
Case Else
FourthQtrLFMth1to12 = 0
End Select
End Function
I would like to consolidate my code to this
Code:
Function QtrLFMth13to24(dThisMonth As Date, ParamArray lngLF() As Variant) As Long
Dim i As Integer
'lngLF() is zero based...
i = Month(dThisMonth) - 1
'function should only receive 16 array elements (6 months data) at a time ...
If i > 5 Then i = i - 6
QtrLFMth13to24 = lngLF(i) + lngLF(i + 1) + lngLF(i + 2)
End Function
I used the above code for simple functions like adding, but the load factor requires more math and I am not sure how to institute it, any ideas?