Business dani u vremenskom periodu po mesecima
Zaključano
Zakačeno
Verovatno može i preko formula, ali bi bilo predugačko. Meni lakše napraviti custom vba function.
Ovde je naravno pretpostavka da startDate < endDate i da su oba datuma u istoj godini, u suprotom je 0.
Ne pokriva ni praznike...ali moglo bi da se reši.
Ovde je naravno pretpostavka da startDate < endDate i da su oba datuma u istoj godini, u suprotom je 0.
Ne pokriva ni praznike...ali moglo bi da se reši.
Code:
Public Function GetWorkdays(ByVal startDate As Date, ByVal endDate As Date, monthNum As Integer) As Double
On Error GoTo GetWorkdaysOnError
Dim startMonth, endMonth As Integer
Dim sof, eof As Date
Dim wf As WorksheetFunction
Set wf = Application.WorksheetFunction
GetWorkdays = 0
startMonth = month(startDate)
endMonth = month(endDate)
If ((startMonth > monthNum And endMonth < monthNum) Or (Year(startDate) <> Year(endDate)) Or (startDate > endDate)) Then
Exit Function
ElseIf (startMonth < monthNum And endMonth > monthNum) Then
sof = DateSerial(Year(startDate), monthNum, 1)
eof = wf.EoMonth(sof, 0)
ElseIf (startMonth = monthNum And endMonth = monthNum) Then
sof = startDate
eof = endDate
ElseIf (startMonth = monthNum) Then
sof = startDate
eof = wf.EoMonth(sof, 0)
ElseIf (endMonth = monthNum) Then
sof = DateSerial(Year(endDate), monthNum, 1)
eof = endDate
End If
GetWorkdays = wf.NetworkDays(sof, eof)
GetWorkdaysOnError:
Set wf = Nothing
End Function
Public Function GetWorkdays(ByVal startDate As Date, ByVal endDate As Date, monthNum As Integer) As Double
On Error GoTo GetWorkdaysOnError
Dim startMonth, endMonth As Integer
Dim sof, eof As Date
Dim wf As WorksheetFunction
Set wf = Application.WorksheetFunction
GetWorkdays = 0
startMonth = month(startDate)
endMonth = month(endDate)
If ((startMonth > monthNum And endMonth < monthNum) Or (Year(startDate) <> Year(endDate)) Or (startDate > endDate)) Then
Exit Function
ElseIf (startMonth < monthNum And endMonth > monthNum) Then
sof = DateSerial(Year(startDate), monthNum, 1)
eof = wf.EoMonth(sof, 0)
ElseIf (startMonth = monthNum And endMonth = monthNum) Then
sof = startDate
eof = endDate
ElseIf (startMonth = monthNum) Then
sof = startDate
eof = wf.EoMonth(sof, 0)
ElseIf (endMonth = monthNum) Then
sof = DateSerial(Year(endDate), monthNum, 1)
eof = endDate
End If
GetWorkdays = wf.NetworkDays(sof, eof)
GetWorkdaysOnError:
Set wf = Nothing
End Function
Hvala djukx66,
Reseno je preko excela tabela je na SP
Morao sam da kreiram pomocne kolone da odredim pocetak i kraj meseca, a onda preko uslova da ako je isti mesec da smo oduzme,
a funkcijom NETWORKDAYS sam dobio tacno radne dani i ima mogucnost da ubacis i drzavne praznike da ih ne preracunava.
Reseno je preko excela tabela je na SP
Morao sam da kreiram pomocne kolone da odredim pocetak i kraj meseca, a onda preko uslova da ako je isti mesec da smo oduzme,
a funkcijom NETWORKDAYS sam dobio tacno radne dani i ima mogucnost da ubacis i drzavne praznike da ih ne preracunava.
Potpis
Patience is a necessary ingredient for genius
Citat:
nenandi: Morao sam da kreiram pomocne kolone ....
Riješio si ok, s obzirom da sam i ja radio sa pomoćnim stupcima, zanima me tvoje rješenje.
No ja nisam postao jer je formula predugačka @kao što je @djux66 spomenuo.
Možeš li prikačiti tvoje rješenje?
evo sheet u prilogu koji razdvaja dane po mesecu, imam jos jedan sheet koji radi sumif po mesecima
Potpis
Patience is a necessary ingredient for genius
Ja sam tebe sasvim drugačije shvatio.
Vidi prilog
Vidi prilog
Ivek extra dosta uproscenije,
moze i tako slucaj kod mene je drugaciji zato sto je tabela i mesece sam morao drugacije da uporedjujem.
moze i tako slucaj kod mene je drugaciji zato sto je tabela i mesece sam morao drugacije da uporedjujem.
Potpis
Patience is a necessary ingredient for genius