Here's a Power Query function I just made to cast the mixed format texts as numbers. It considers the last occurance of dot or comma as the decimal separator, as long as that character occures only once in the text.
To use this function, go to your "Power Query" ribbon tab, click "From Other Sources" > "Blank Query". Then go to "Advanced Editor" and copy-paste script below to the editor and save. You can then go back to your main query and click "Add Column" > "Add Custom Column". The formula after "=" would be: toNumber([column name]).
let
toNumber = (text) =>
let
//remove characters that occur more than once as they can't be decimal separators
text1 = if List.Count(Text.PositionOf(text, ",", Occurrence.All)) > 1
then Text.Replace(text, ",", "") else text
, text2 = if List.Count(Text.PositionOf(text1, ".", Occurrence.All)) > 1
then Text.Replace(text1, ".", "") else text1
//if there are still more than one potential decimal separator, remove the kind that occurs first
//let's assume the last one is the actual decimal separator
, text3 = if List.Count(Text.PositionOfAny(text2, {",","."}, Occurrence.All)) > 1
then Text.Replace(text2, Text.At(text2, Text.PositionOfAny(text2, {",","."}, Occurrence.First)), "")
else text2
//cast as number (try different decimal separators)
, number =
try Number.ToText(Number.From(Text.Replace(text3,",",".")))
otherwise Number.ToText(Number.From(Text.Replace(text3,".",",")))
in
number
in
toNumber