Another option
let
Source = Table.FromRows(
{{1,"Sample1"},{900,"Sample2"},{"Sample3",1001},{"Sample4",1002},
{"2001A","Sample5"},{"2001B","Sample6"},{5000,"Sample7"},{6000,"Sample8"},
{"2001B","Sample9"},{"Sample10","3A"}}, {"Code","Translation"}
),
ChangeTypes = Table.TransformColumnTypes(Source,
{{"Code", type text},{"Translation", type text}}
),
ActualCode = Table.AddColumn(ChangeTypes, "Actual.Code", each
try Text.From(Number.From(Text.Start([Code],4))) & Text.Middle([Code],4)
otherwise [Translation],
type text
),
ActualTranslation = Table.AddColumn(ActualCode, "Actual.Translation", each
if [Code]=[Actual.Code] then [Translation] else [Code],
type text
),
RemoveColumns = Table.SelectColumns(ActualTranslation,
{"Actual.Code", "Actual.Translation"}
),
PadCode = Table.TransformColumns(RemoveColumns,
{"Actual.Code", each Text.PadStart(_,4,"0"), type text}
),
ColumnNames = Table.TransformColumnNames(PadCode, each
Text.AfterDelimiter(_,".")
),
SortCode = Table.Sort(ColumnNames,{{"Code", Order.Ascending}})
in
SortCode
my apologies i didn't really know what tag i was supposed to do. lol