• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

6 werkdagen in een week

Status
Niet open voor verdere reacties.

clervaux

Gebruiker
Lid geworden
8 sep 2000
Berichten
9
Ik ben op zoek naar een manier om het aantal dagen te berekenen tussen 2 opgeven data, waarbij rekening wordt gehouden met 6 werkdagen per werkweek. De functie netto.werkdagen werkt niet omdat die alleen maar werkt met een werkweek van 5 werkdagen. Wie heeft een oplossing?
 
Plak onderstaande code in een module

Function Aantal_Werkdagen(Range1) As Double
Dim objCell As Range
'Application.Volatile

Aantal_Werkdagen = 0

For Each objCell In Intersect(Range1, _
Range1.Parent.UsedRange)
Debug.Print Weekday(objCell.Value, vbSunday)
If Weekday(objCell.Value, vbSunday) <> 7 Then _
Aantal_Werkdagen = Aantal_Werkdagen + 1
Next objCell

End Function

Je kunt nu in een cel de formule aanroepen, bijvoorbeeld
= Aantal_werkdagen(A1:A30)

Succes

John
 
mischien kun je toch nog helpen. Hoe voeg je een module toe. Het zal wel net zo gaan als een macro, maar ik weet niet hoe het moet. Alvast bedankt
 
Het is toch niet helemaal wat ik bedoelde. Het is wel gelukt om een module te maken. (ik had mijn eigen vraag al beantwoord).
voorbeeeld. in cel a1 staan een datum en een datum in b1. Nu wil ik als resultaat het aantal werkdagen (6 per week , excl zondag ) dus de nieuwe formule zou er zo uit moeten zien aantal_werkdagen(a1;b1)
 
Dit zou het moeten worden:

Function Aantal_Werkdagen(Range1, Range2) As Double
Dim Startdatum As Date
Dim Einddatum As Date
Dim TempDate As Date
Startdatum = Range1.Value
Einddatum = Range2.Value
Aantal_Werkdagen = 0
TempDate = Startdatum
If Startdatum >= Einddatum Then
MsgBox "start en einde zijn gelijk.", vbOKOnly, "Error!"
Exit Function
End If

Do While TempDate <= Einddatum
Debug.Print Weekday(TempDate, vbSunday)
If Weekday(TempDate, vbSunday) <> 7 Then _
Aantal_Werkdagen = Aantal_Werkdagen + 1
TempDate = TempDate + 1
Loop
End Function

Met inderdaad =aantal_werkdagen(A1;B1)
in A1 staat de startdatum, in B1 de einddatum

Succes

John
 
Nogmaals hartelijk bedank voor de oplossing. Ik wou dat ik zo goed was met VB. Ik kan heel veel met excel, maar dit nog niet. Moet ik maar een keer gaan leren.
 
Veel lezen op dit forum is een geweldige les.
Kom je een uitdagende vraag tegen, probeer deze dan zelf op te lossen en vergelijk je oplossing later met die van anderen.

Succes

John

"Everywhere is within walking distance if you have the time"
- Steven Wright -
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan