Hi @nickellis74 ,
I took a look at this, relatively easy to do within JavaScript which you can access via "Office Scripts". Please see this video demo here:
https://youtu.be/41eSmox7iPk
The code for the Office Script function is:
function main(workbook: ExcelScript.Workbook, n: string): string {
var string = n.toString(), units, tens, scales, start, end, chunks, chunksLen, chunk, ints, i, word, words, and = 'and';
/* Remove spaces and commas */
string = string.replace(/[, ]/g, "");
/* Is number zero? */
if (parseInt(string) === 0) {
return 'zero';
}
/* Array of units as words */
units = ['', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten', 'eleven', 'twelve', 'thirteen', 'fourteen', 'fifteen', 'sixteen', 'seventeen', 'eighteen', 'nineteen'];
/* Array of tens as words */
tens = ['', '', 'twenty', 'thirty', 'forty', 'fifty', 'sixty', 'seventy', 'eighty', 'ninety'];
/* Array of scales as words */
scales = ['', 'thousand', 'million', 'billion', 'trillion', 'quadrillion', 'quintillion', 'sextillion', 'septillion', 'octillion', 'nonillion', 'decillion', 'undecillion', 'duodecillion', 'tredecillion', 'quatttuor-decillion', 'quindecillion', 'sexdecillion', 'septen-decillion', 'octodecillion', 'novemdecillion', 'vigintillion', 'centillion'];
/* Split user argument into 3 digit chunks from right to left */
start = string.length;
chunks = [];
while (start > 0) {
end = start;
chunks.push(string.slice((start = Math.max(0, start - 3)), end));
}
/* Check if function has enough scale words to be able to stringify the user argument */
chunksLen = chunks.length;
if (chunksLen > scales.length) {
return '';
}
/* Stringify each integer in each chunk */
words = [];
for (i = 0; i < chunksLen; i++) {
chunk = parseInt(chunks[i]);
if (chunk) {
/* Split chunk into array of individual integers */
ints = chunks[i].split('').reverse().map(parseFloat);
/* If tens integer is 1, i.e. 10, then add 10 to units integer */
if (ints[1] === 1) {
ints[0] += 10;
}
/* Add scale word if chunk is not zero and array item exists */
if ((word = scales[i])) {
words.push(word);
}
/* Add unit word if array item exists */
if ((word = units[ints[0]])) {
words.push(word);
}
/* Add tens word if array item exists */
if ((word = tens[ints[1]])) {
words.push(word);
}
/* Add 'and' string after units or tens integer if: */
if (ints[0] || ints[1]) {
/* Chunk has a hundreds integer or chunk is the first of multiple chunks */
if (ints[2] || !i && chunksLen) {
words.push(and);
}
}
/* Add hundreds word if array item exists */
if ((word = units[ints[2]])) {
words.push(word + ' hundred');
}
}
}
return words.reverse().join(' ');
}
You just need to add this script to your Office Scripts library which you can do by accessing Excel via a browser. I suggest you create an empty workbook called PowerAutomateFunctions.xlsx in your OneDrive (although any excel file will do as you are not actually going to work with the file).
You can also download my "Office Script" directly from my blog here:
https://www.tachytelic.net/wp-content/uploads/numberToEnglish.zip
if you unzip it place it into your Onedrive\documents\Office Scripts folder, it will become available to you instantly.
This is the place on stack overflow where I got the function from:
https://stackoverflow.com/questions/14766951/transform-numbers-to-words-in-lakh-crore-system
Warning: Office scripts are currently restricted to 200 executions per day, so this solution may not work for you if you need to run it more than that on a daily basis.
Let me know how you get on.