Geneste functies (oplossingen)
Bijgaand aangekaart probleem met voor de liefhebber 3 oplossingen waarvan de 1ste prima (van Hilde van de Put) werkt, de 2de (van Ad Bécude, Ingrid Baplue) wel zou moeten werken, maar helaas (nog) niet bij mij werkt, en een 3de oplossing (van Ilse DD) die ik nog niet heb uitgeprobeerd.
Het probleem:
Ik heb 2 geneste formules die afzonderlijk prima werken,
zie onderstaand.
=ALS(OF(AH5="SENIOR GUARD EYGH";AH5="SUPERVISOR SECURITY
EYGH");CK5*33,53%;ALS(AH5="CHIEF SECURITY";CK5*16,95%;ALS
(AH5="PLV. CHIEF SECURITY";CK5*16,95%;0)))
en
=ALS(EN(AH5="GUARD BR";CK5>1962,76);1962,76*27,69%;ALS(EN
(AH5="GUARD BR";CK5<=1962,76);CK5*27,69%;ALS(EN
(AH5="GUARD SCHINNEN";CK5>1962,76);1962,76*29,43%;ALS(EN
(AH5="GUARD SCHINNEN";CK5<=1962,76);CK5*29,43%;ALS(EN
(AH5="GUARD EYGH";CK5>1962,76);1962,76*33,53%;ALS(EN
(AH5="GUARD EYGH";CK5<=1962,76);CK5*33,53%;0))))))
De oplossing van Hilde van de Put:
maak ergens (maakt niet uit waar) een lijstje met de functies en percentages in 2 kolommen (zoals hieronder)
taak percentage
senior guard eygh 33,53
supervisor security eygh 33,53
chief security 16,95
plv. chief security 16,95
guard br 27,69
guard schinnen 29,43
guard eygh 33,53
Best geef je daarna dit tabelletje een naam bijv. Functies (zo heb ik het genoemd)
Dan kan je de volgende formule gebruiken in plaats van al die geneste functies:
=ALS(EN(CK5>1962,76;OF(AH5="GUARD BR";AH5="GUARD SCHINNEN";AH5="GUARD EYGH"));1962,76*VERT.ZOEKEN(AH5;Functies;2;ONWAAR)/100;CK5*VERT.ZOEKEN(AH5;Functies;2;ONWAAR)/100)
De oplossing van Ad Bécude en Ingrid Baplue (die dus steeds nog niet bij mij werkt):
* Selecteer de cel met de 1e formule.
* Ga naar het vak linksboven waar het adres staat van die cel. (bij de
lettertype)
* toets daar een naam in. (bijvoorbeeld: formule1)
* Selecteer de cel met de 2e formule.
* Ga naar het vak linksboven waar het adres staat van die cel. (bij de
lettertype)
* toets daar een naam in. (bijvoorbeeld: formule2)
* Ga naar een lege cel en zet daar neer =ALS(formule1;formule1;formule2)
En de hele exotische oplossing (van Ilse DD) die ik nog niet heb uitgeprobeerd:
een functie maken in Vba waarbij in dit voorbeeld als parameternamen worden gebruikt:
AH5 = typeguard
CK5 = rekengetal
function veelkeuzes(TypeGuard as string, rekengetal as single) as single
select case TypeGuard
case is = "SENIOR GUARD EYGH", "SUPERVISOR SECURITY EYGH"
veelkeuzes = rekengetal*(33.53/100)
case is = "CHIEF SECURITY"
veelkeuzes = rekengetal*(16.95/100)
case is = "PLV. CHIEF SECURITY"
veelkeuzes = rekengetal*(16.95/100)
case is = "GUARD BR"
if rekengetal > 1962.76 then
veelkeuzes = 1962.76*(27.69/100)
else
veelkeuzes = 1962.76*(29.43/100)
end if
case is = "GUARD SCHINNEN"
if rekengetal > 1962.76 then
veelkeuzes = 1962.76* (29.43/100)
else
veelkeuzes = rekengetal*(29,43/100)
end if
case is = "GUARD EYGH"
if rekengetal > 1962.76 then
veelkeuzes = 1962.76* (33,53/100)
else
veelkeuzes = rekengetal*(33.53/100)
end if
case else
veelkeuzes = 0
end select
end function
Type deze in een VBA module en sla ze op.
In excel is het dan deze formule = veelkeuzes(AH5,CK5)