Hello @Sairam,
I guess you want to convert numbers to words:
In Japanese you would not need to have a “Translation” table for the number lower than 100 - lower than 10 would be sufficient. But in germanic and romanic languages you need to have a table for the numbers from 0-99, which you can use to replace the numbers with words.
Mine looked like this, so I had to split it first. Note that the first entries are duplicated to cater for numbers of different length:
…
let
Source = Excel.CurrentWorkbook(){[Name="Table3"]}[Content],
#"Split Column by Delimiter" = Table.SplitColumn(Source, "NumberWord", Splitter.SplitTextByEachDelimiter({"–"}, QuoteStyle.Csv, false), {"Name", "Value"}),
Record = Record.FromTable(#"Split Column by Delimiter")
in
Record
And here is the main code:
let
Source = Excel.CurrentWorkbook(){[Name="Table2"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Number", type text}}),
#"Added Padding" = Table.TransformColumns(#"Changed Type", {{"Number", each Text.PadStart(_, 15), type text}}),
#"Split Column by Position" = Table.SplitColumn(#"Added Padding", "Number", Splitter.SplitTextByRepeatedLengths(1), {
"HundredTrillions", "TenTrillions", "Trillions",
"HundredBillions", "TenBillions", "Billions",
"HundredMillions", "TenMillions", "Millions",
"HundredThousands", "Tenhousands", "Thousands",
"Hundreds", "Tens", "Ones"}),
#"Replaced space" = Table.ReplaceValue(#"Split Column by Position"," ","",Replacer.ReplaceText,Table.ColumnNames(#"Split Column by Position")),
#"Merged Ones" = Table.CombineColumns(#"Replaced space",{"Tens", "Ones"},Combiner.CombineTextByDelimiter("", QuoteStyle.None),"Ones"),
#"Merged Thoussands" = Table.CombineColumns(#"Merged Ones",{"Tenhousands", "Thousands"},Combiner.CombineTextByDelimiter("", QuoteStyle.None),"thousand"),
#"Merged Millions" = Table.CombineColumns(#"Merged Thoussands",{"TenMillions", "Millions"},Combiner.CombineTextByDelimiter("", QuoteStyle.None),"million"),
#"Merged Billions" = Table.CombineColumns(#"Merged Millions",{"TenBillions", "Billions"},Combiner.CombineTextByDelimiter("", QuoteStyle.None),"billion"),
#"Merged Trillions" = Table.CombineColumns(#"Merged Billions",{"TenTrillions", "Trillions"},Combiner.CombineTextByDelimiter("", QuoteStyle.None),"trillion"),
#"Replaced Numbers" = Table.ReplaceValue(#"Merged Trillions","","",(a,b,c)=>Record.FieldOrDefault(Translation, a, a),Table.ColumnNames(#"Merged Trillions")),
#"Added hundred" = Table.ReplaceValue(#"Replaced Numbers","","",(a,b,c)=>if a <> "" and a <> "zero" then a & " hundred" else "",List.Select(Table.ColumnNames(#"Replaced Numbers"), each Text.Contains(_, "Hundred") )),
#"Added thousand" = Table.ReplaceValue(#"Added hundred",each [thousand],each if [thousand]<>"" then [thousand] &" thousand" else "",Replacer.ReplaceValue,{"thousand"}),
#"Added million" = Table.ReplaceValue(#"Added thousand",each [million],each if [million]<>"" then [million] &" million" else "",Replacer.ReplaceValue,{"million"}),
#"Added billion" = Table.ReplaceValue(#"Added million",each [billion],each if [billion]<>"" then [billion] &" billion" else "",Replacer.ReplaceValue,{"billion"}),
#"Added trillion" = Table.ReplaceValue(#"Added billion",each [trillion],each if [trillion]<>"" then [trillion] &" trillion" else "",Replacer.ReplaceValue,{"trillion"}),
#"Merged Columns" = Table.CombineColumns(#"Added trillion",Table.ColumnNames(#"Added trillion"),Combiner.CombineTextByDelimiter(" ", QuoteStyle.None),"Word"),
#"Trimmed Text" = Table.TransformColumns(#"Merged Columns",{{"Word", Text.Trim, type text}}),
#"Replaced space2" = Table.ReplaceValue(#"Trimmed Text"," "," ",Replacer.ReplaceText,{"Word"})
in
#"Replaced space2"
Regards,
Matthias