Hét vraag- en antwoordplatform van Nederland

Meerdere geneste functies in Excel

Tijdsduur berekening; tot 5 uur bruto is netto tijd, >5 en <10 - ½uur pauze, > 10 uur - 1 uur pauze. Gaat dit met ALS en Of?

Verwijderde gebruiker
14 jaar geleden
in: Software
1K

Heb je meer informatie nodig om de vraag te beantwoorden? Reageer dan hier.

Het beste antwoord

Jazeker, maar wel heel goed opletten voor de haakjes...

=ALS(voorwaarde;als waar;als onwaar)

dat is de format en je mag nesten zolang je wil... Ik heb wel eens een als-regel gemaakt van 3 fysieke regels... wel een hele klus met debuggen en aanpassen maar het kan, nesten zover je kunt...

Toegevoegd op 31-05-2009 18:21:09
de of-functie is een boolean en hier niet voor geschikt...
(Lees meer...)
Verwijderde gebruiker
14 jaar geleden

Andere antwoorden (2)

= bruto - ALS(bruto<=5/24; 0; ALS(bruto<=10/24; 0,5; 1))/24

"bruto" verwijst naar de cel waarin je bruto-uren staan. Ik ga ervan uit dat je die uren echt in tijdformaat hebt ingevoerd, dus bijvoorbeeld 07:15 als je zeven uur en een kwartier hebt gewerkt.

De formule rekent "netto" uit.

"netto" is bruto min de pauze.

Pauze is:
- 0 uur als bruto <= 5 uur
en anders
- 0,5 uur als bruto <= 10 uur
en anders
- 1 uur

Ik vergelijk "bruto" niet met 5 maar met 5/24, omdat ik ervan uitga dat "bruto" in uurnotatie is ingevuld. In excel komt "1" overeen met een dag, dus een uur is de waarde 1/24; vandaar dat ik met 5/24 resp. 10/24 vergelijk voor 5 resp. 10 uur. Als jij met hele uren werkt, moet je die deling door 24 weglaten.

Goed, dan de pauze. De ALS rekent die uit in 0 of 0,5 of 1. Omdat ik met Excel-tijden werk, deel ik die weer door 24 om ze van "bruto" te kunnen aftrekken. Ook hier moet je die deling door 24 weglaten als jij met hele uren werkt.

Toegevoegd op 31-05-2009 18:40:04
Oh ja, kijk zelf wat je wilt doen bij *precies* vijf of tien uur. Misschien moet je de "<=" veranderen in een "<", dat is afhankelijk van hoe je met die grensgevallen wilt omgaan.
(Lees meer...)
Verwijderde gebruiker
14 jaar geleden
Je kunt het ook als volgt aanpakken:
Als je in cel A1 de bruto tijd hebt staan dan is je formule voor bruto tijd: =A1-MIN(1;INTEGER(A1/5)/2)

Succes ermee!

Toegevoegd op 31-05-2009 18:42:26
"formule voor NETTO tijd" bedoel ik...
(Lees meer...)
Verwijderde gebruiker
14 jaar geleden
Verwijderde gebruiker
14 jaar geleden
Nadeel van dit soort trucs is dat het alleen werkt voor grenzen bij 5 en 10 uur, en niet voor 15 uur of meer bruto. En 't is niet heel inzichtelijk. Beter een begrijpelijke formule dan een optimale formule.
Verwijderde gebruiker
14 jaar geleden
Waarom werkt de formule niet voor 15 uur of meer? Ik ben er volgens de informatie van uit gegaan dat de maximale pauze 1 uur is en dat de pauze bij 15 uur of meer dus nog steeds 1 uur is. Indien bij 15 uur of meer de pauze toch 1½ uur wordt dan moet de formule veranderd worden in =A1-MIN(1,5;INTEGER(A1/5)/2) Of in het algemeen: Als de pauze echt elke 5 uur een half uur langer wordt dan is de formule gewoon =A1-INTEGER(A1/5)/2 Ik zou niet weten waarom deze fomule niet inzichtelijk is. Je pakt het bruto aantal uren (A1) en trekt daar de pauze van af. Deze pauze bereken je door het aantal bruto uren door 5 te delen en af te ronden op een geheel getal en vervolgens met een ½ uur te vermenigvuldigen.
Verwijderde gebruiker
14 jaar geleden
De vraag ging over meer dan 5, dan wel meer dan 10 uur. Bij 15 uur, of 20 uur, blijft de pauze 1 uur. Dat is in jouw oorspronkelijke formule niet het geval. Verder begrijp ik jouw formule helemaal. Voor mij issie inzichtelijk. Ik heb echter ervaren dat anderen deze methode als een "rekentruc" zien. Moeilijk te begrijpen. Gevolg is dus dat zo'n mooie formule slecht is te onderhouden door een eventuele opvolger. Of door de klant, als jij degene bent die het spreadsheet bouwt en het dan aan de klant levert. Nog een nadeel is dat jouw formule moet worden omgebouwd als het niet meer na 5 en na 10 uur is, maar na 5 en na 8 uur. Vroeger maakte ik ook van dat soort geoptimaliseerde formules. Nu doe ik dat niet meer. Wat ik door ervaring (schade en schande) heb geleerd is: zorg dat een formule zo goed mogelijk lijkt op dat wat je wilt. Gaat het om werktijden van 5 en 10 uur, en om pauzes van 1/2 en 1 uur? Zorg dan dat die getallen (dus 5, 10, 1/2 en 1) ook letterlijk in de formule terugkomen. Dat geeft je opvolger houvast.
Verwijderde gebruiker
14 jaar geleden
"De vraag ging over meer dan 5, dan wel meer dan 10 uur. Bij 15 uur, of 20 uur, blijft de pauze 1 uur. Dat is in jouw oorspronkelijke formule niet het geval." Ja dat is mijn oorspronkelijke formule WEL het geval!!! Hoe kom je erbij dat dit niet zo is? Ik zou zeggen kopieer en plak de formule in Excel en dan kun je het zien dat deze werkt. Verder ga ik ervan uit dat mijn opvolger ook verstand heeft van formules en Excel. Verder gebruik je constant het woordje truc. Wat bedoel je met truc??? Het is een formule en geen truc! We hebben het over Excel en niet over Hans Kazan.
Verwijderde gebruiker
14 jaar geleden
Goed, point taken. Wel een heel verhaal voor bij zo een korte formule ;-) Ik ben niet eens met jou definitie van truc overigens. MIN() zie ik niet als truc, maar een formule om aan de gebruikerswens van een maximale pauze van een uur tegemoet te komen. Overigens ken ik een nog leuker "trucje" ;-) =A1-(A1>5)/2-(A1>10)/2 Deze is nog korter (korter kan bijna niet denk ik) en voldoet WEL aan jouw wens van flexibiliteit. Je kunt nu namelijk wel de 5 en de 10 makkelijk vervangen door een 5 en een 8 bijvoorbeeld. Ook de half uur pauze is makkelijk aan te passen.
Verwijderde gebruiker
14 jaar geleden
Ah, die formule is prachtvol!
Verwijderde gebruiker
14 jaar geleden
Oeps, ja, ik had die MIN() in je formule helemaal over het hoofd gezien - excuses daarvoor! "truc" is voor mij alles wat een niet helemaal directe relatie heeft met de oorspronkelijke vraag. Daarom noemde ik INTEGER() een truc om >=5 naar 1, en >=10 naar 2 te vertalen. Evenzo is MIN() een truc om te voorkomen dat >=15 tot 1,5 leidt. Die benaming komt uit mijn verleden, waarin ik "Koning Excel" was - simpelweg omdat ik geneste formules gebruikte. Het uitgangspunt dat mijn opvolger verstand heeft van formules, gaat dus niet op. Ik heb een paar maanden op inhuurbasis gewerkt bij een grote bank. Aan de zogenaamde Rating. Daarbij werden gegevens van een bedrijf ingevoerd in een model, en dat model berekende dan de kredietwaardigheid van dat bedrijf. Dat gebeurde in Excel (mijn taak was het omzetten van die Excel-spreadsheets in een fatsoenlijk, robuust programma). Daar ben ik een flink aantal elementaire fouten tegengekomen. In de trant van ALS(A1>50; ...; ...). Waarbij A1 een percentage was. Dat werd dan wel getoond als (bijvoorbeeld) 60%, maar de onderliggende waarde was 0,6. Dus A1 kon nooit groter zijn dan 50 - 50 zou overeenkomen met 5000 procent… Dus ook mensen die dagelijks met Excel en met formules werken, maken elementaire fouten. Dat is de reden dat ik mijn formules zo eenvoudig mogelijk houd. Onderdeel daarvan is een directe relatie leggen tussen de formule en de achterliggende vraag. Zowel voor de getallen als voor de manier van berekenen. Ik maak soms zelfs gebruik van tussenresultaten, om nesting te vermijden. Voor mezelf zou ik dat nooit doen, maar als een spreadsheet ooit door een ander gaat worden gebruikt, maak ik liever een paar extra kolommetjes aan. Op dit moment werk ik in een omgeving waarin heel veel Koningen Excel zitten. Nu kan ik me dus wel uitleven. Heerlijke Array Formulas in elkaar knutselen, en mijn collega’s begrijpen ze nog ook!
Verwijderde gebruiker
14 jaar geleden
He, onze discussies staan niet meer op chronologische volgorde zie ik...

Weet jij het beter..?

Het is niet mogelijk om je eigen vraag te beantwoorden Je mag slechts 1 keer antwoord geven op een vraag Je hebt vandaag al antwoorden gegeven. Morgen mag je opnieuw maximaal antwoorden geven.

0 / 2500
Gekozen afbeelding