JeanWM Posted September 29, 2011 Posted September 29, 2011 Heeft iemand de custom function, of de berekening, voor het omzetten van getallen naar woorden, maar dan in het Nederlands?. Ik heb het in het Engels, Frans en Spaans, maar zou dat ding nu wel eens in het Vlaams willen hebben. Tx Quote
0 menno Posted September 30, 2011 Posted September 30, 2011 Op Briandunning.com heb ik de formule "NumberInWords(NumberIn;Currency;DecimalCurr)" (zie: http://www.briandunning.com/cf/106) gevonden van Chris Harvey van de Bank of Bermuda en heb deze aangepast naar het nederlandse getalformaat: NumberInWords( NumberIn ; Currency ; DecimalCurr ) Case(NumberIn = 0; ""; Let ( [ FullNumber = GetAsNumber( numberin ); Number = Int( FullNumber ); len = If ( Number = 0 ; 0 ; Int(Log(Number)) + 1 ) ] ; Case(len > 27; "buiten bereik"; Currency = "EvalOnly"; Let([ Hundred = Left(number; 1); TensOnes = Right(number; 2); TONum = GetAsNumber(TensOnes); Tens = Left(TensOnes; 1); Ones = If( TONum < 20; TensOnes; Right(TensOnes; 1)) ]; Case(len = 3; Choose(hundred; ""; "een"; "twee"; "drie"; "vier"; "vijf"; "zes"; "zeven"; "acht"; "negen") & "honderd" & Case(TONum≠0;"en")) & Case(TONum > 19; Choose(ones; ""; "een"; "twee"; "drie"; "vier"; "vijf"; "zes"; "zeven"; "acht"; "negen") & Case(ones>0 ; "en") & Choose(tens; ""; ""; "twintig"; "dertig"; "veertig"; "vijftig"; "zestig"; "zeventig"; "tachtig"; "negentig"); Choose(ones; ""; "een"; "twee"; "drie"; "vier"; "vijf"; "zes"; "zeven"; "acht"; "negen"; "tien"; "elf"; "twaalf"; "dertien"; "veertien"; "vijftien"; "zestien"; "zeventien"; "achtien"; "negentien")) ); Case(len >3; Let([ UseLeft = Choose(Mod(len; 3);3; 1; 2); NewLen= 10 ^ (len - UseLeft); ThisValue = Div(number; NewLen); NewValue = Number - ThisValue * NewLen ]; NumberInWords ( ThisValue; "EvalOnly"; "None" ) & Choose( Div(len - 1; 3); ""; "duizend"; "miljoen"; "miljard"; "biljoen" ; "biljard" ; "triljoen" ; "triljard" ; "quadriljoen" ) & Case(NewValue ≠ 0; NumberInWords(NewValue; ""; "None")) ); len = 0; "nul" ; NumberInWords(Number; "EvalOnly"; "None")) & Case(currency ≠ ""; " " & Currency) & Case(DecimalCurr ≠ "None"; " en " & Let( Decimal = Int(100 * (fullnumber - number)); If(Decimal = 0; "nul"; NumberInWords(Decimal; "EvalOnly"; "None"))) & " " & DecimalCurr)) )) werkt bij mij als een zonnetje mvg, Menno Quote
0 JeanWM Posted September 30, 2011 Author Posted September 30, 2011 Bedankt Menno. Hier is er echter een wolkje voor het zonnetje.... 100 wordt weergegeven als "eenhonderd' en 1000 wordt "eenduizend" Blijkbaar is er wat taalkundig opkuiswerk nodig..... Eens kijken of het Spaanse stramien wat hulp kan bieden. Quote
0 menno Posted September 30, 2011 Posted September 30, 2011 Dat is niet per ongeluk, op een cheque schrijf je namelijk voor 125,50: Zegge Éénhonderdenvijfentwintig euro en vijftig eurocent. De formule echter erg simpel aan te passen succes, Menno Quote
Question
JeanWM
Heeft iemand de custom function, of de berekening, voor het omzetten van getallen naar woorden, maar dan in het Nederlands?.
Ik heb het in het Engels, Frans en Spaans, maar zou dat ding nu wel eens in het Vlaams willen hebben.
Tx
3 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.