PDA

View Full Version : PQ - Evaluate



sandy666
07-13-2023, 04:15 AM
EquationEvaluate

1+2
3

125x12
1500

12x3-99
-63

22:7
3.142857143

125x(5+7:2)
1062.5

34:(9x0.6-3)^3
2843.171296

3^(34:(9x0.6-3))
5744044.228

2^7
128

7^0
1

5-""check the syntax

2:0check the syntax

Ax9check the syntax

3=2
FALSE

3<>2
TRUE

5:0.+3check the syntax

5:0x4check the syntax

0^7
0

0.59x3.21:0.5:0check the syntax

5x(3+2check the syntax

6^check the syntax

2^-3
0.125

27^1/3
3

2^(1/2)
1.414213562

3^(1/2)
1.732050808

10^(1/10)
1.258925412

Ln(10)
2.302585093

Log(2)
0.693147181



// Evaluate
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
Null = Table.SelectRows(Source, each ([Equation] <> null)),
RepColon = Table.ReplaceValue(Null,":","/",Replacer.ReplaceText,{"Equation"}),
RepAsterisk = Table.ReplaceValue(RepColon,"x","*",Replacer.ReplaceText,{"Equation"}),
EE = Table.AddColumn(RepAsterisk, "Evaluate", each try if Text.Contains([Equation], "/0") or Text.Contains([Equation], "/0.") then "check the syntax" else if Text.Contains([Equation], "Log") then Number.Log(Number.From(Text.BetweenDelimiters([Equation], "(", ")"))) else if Text.Contains([Equation], "Ln") then Number.Ln(Number.From(Text.BetweenDelimiters([Equation], "(", ")"))) else if Text.Contains([Equation], "^") then Number.Power(Expression.Evaluate(Text.BeforeDelimi ter([Equation], "^")), Expression.Evaluate(Text.AfterDelimiter([Equation], "^"))) else Expression.Evaluate([Equation]) otherwise "check the syntax"),
TSC = Table.SelectColumns(EE,{"Evaluate"})
in
TSC