Ga naar inhoud
  • 0

Nesten van een formule


martindes

Vraag

Het nesten van formules blijft een beetje een probleem voor mij.

 

Bijvoorbeeld

 

Ik heb een veld waar een getal in kan staan maar ook tekst zoals RET, DNQ, DSQ of DNS

 

Van alle records wil ik de waardes die een getal zijn en de waarde DSQ bij elkaar optellen.

 

De andere waardes moeten niet meegeteld worden.

 

Volgens mij kan ik dat doen met een case functie waarin ik een count functie zou kunnen nesten. (of andersom)

 

En dat laatste lukt mij dus niet.

 

Kan iemand mij daarmee op weg helpen zodat ik wat beter vat krijg op het maken van geneste formules?

 

Met vriendelijke dank.

Link naar reactie

4 antwoorden op deze vraag

Aanbevolen berichten

  • 0

Excuus voor de late reactie. Nogal druk en in China (waar ik verblijf) is dit forum af en toe niet bereikbaar.

 

Ik snap het een beetje.

 

De onderstaande formule krijg ik bijvoorbeeld niet voor elkaar met het nesten. Ik heb een geboortedatum en een overlijdensdatum.

Ik gebruik hiervoor 4 velden. "geboortedatum" "overlijdensdatum" "leeftijd" "leeftijd bij overlijden"

 

Wanneer de persoon nog leeft dan blijft het veld "leeftijd bij overlijden leeg. Is de persoon overleden dan blijft het veld leeftijd leeg en geeft het veld "leeftijd bij overlijden" de leeftijd weer.

 

Echter ik heb een aantal personen in de database waar ik of de geboortedatum en de overlijdensdatum niet van heb.

 

Nu verschijnt er in het veld leeftijd bij deze personen "2015" Dat is uiteraard de uitkomst van de formule omdat die begint te tellen bij het begin van de jaartelling.

 

Ik zou in het veld "geboortedatum" "onbekend" willen hebben wanneer de geboortedatum niet bekend is.

 

Wanneer ik in deze formule de regel "(IsEmpty (Geboortedatum));"Onbekend";" als eerste plaats dan kloppen de () niet meer. Dat snap ik dus niet.

 

Case

 

(IsEmpty (Overlijdensdatum);

 

Year ( Get ( HuidigeDatum ) ) - Year ( Geboortedatum ) - If ( Get ( HuidigeDatum ) < Date ( Month ( Geboortedatum ) ; Day ( Geboortedatum ) ; Year ( Get ( HuidigeDatum ) ) ); 1 ; 0 );

 

 

(IsEmpty (Geboortedatum));"Onbekend";

""

 

 

)

Link naar reactie
  • 0

Het probleem is dat je begint met

Case ( IsEmpty ( Overlijdensdatum ) 

Je moet je afvragen wat de meest significante factor is. In dit geval is dat de "Geboortedatum", want als die onbekend is kan je de leeftijd bij leven, noch bij overlijden uitrekenen.

 

De berekening voor de leeftijd bij leven zou er als volgt uit kunnen zien:

Case ( 
      IsEmpty ( Geboortedatum ) and IsEmpty ( Overlijdensdatum ) ; "Onbekend" ; 
      IsEmpty ( Geboortedatum ) ; "" ; 
      IsEmpty ( Overlijdensdatum ) ; Year ( Get ( HuidigeDatum ) - Geboortedatum + 1 ) - 1 ; 
      "" )

En de leeftijd bij overlijden zo:

Case ( 
      IsEmpty ( Overlijdensdatum ) ; "" ; 
      IsEmpty ( Geboortedatum ) ; "Onbekend" ; 
      Year ( Overlijdensdatum - Geboortedatum + 1 ) - 1 )

Je ziet dat de formule voor de leeftijdsberekening ook wat korter is dan de jouwe. Dat kan alleen maar omdat jij de leeftijd in jaren vraagt. De "-1" is omdat de jaartelling start in het jaar "1" terwijl wij leeftijd tellen vanaf "0", de "+1" is omdat wij de leeftijd aan het begin van de verjaardag een jaar opschuiven ipv aan het einde van de verjaardag.

Link naar reactie

Doe mee aan dit gesprek

Je kunt dit nu plaatsen en later registreren. Indien je reeds een account hebt, log dan nu in om het bericht te plaatsen met je account.

Gast
Beantwoord deze vraag...

×   Geplakt als verrijkte tekst.   Plak in plaats daarvan als platte tekst

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...