• 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.

Geneste functies

Status
Niet open voor verdere reacties.

JHM Wetzelaer

Gebruiker
Lid geworden
14 jan 2005
Berichten
80
Ik heb 2 geneste formules die afzonderlijk prima werken,
zie onderstaand. Ik heb geprobeerd met het definieren
van beide functies deze formules samen te voegen tot 1
formule conform de uitleg van Ingrid. Helaas werkt dit ook niet. Wie kan mij helpen hierbij.

=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))))))
 
maximum 7

je kan maximum zeven 'als' functies in elkaar nesten !
Je hebt er helaas 8.
 
misschien toch ook even kijken naar
geneste functies van 03/01/2005
 
begrijp ik niet

bedoel je dat hier meer dan 7 als-functies genest zijn ? Of geef je dit aan als mogelijke oplossing
MOgelijke oplossing voor meer dan 7 is vert-zoeken / Vlookup (een deel van de (voor)waarden extern plaatsen, maar dan heb je net zoals nu een tussenberekening

beter is een functie maken in Vba waarbij ik in dit voorbeeld als parameternamen gebruik:
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)

Ik denk dat hij juist is, maar heb hem helaas niet zelf uitgetest ! Ik bekijk dit louter theoretisch.
 
Laatst bewerkt:
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)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan