26.03.2024, 10:45
Hi Luschi & alle,
es geht noch wesentlich einfacher, wenn beim ersetzten eine neue Spalte gebildet und diese für den Table.FuzzyNestedJoin verwendet wird, da dann die hilfsweisen Ersetzungen nicht mehr rückgängig gemacht werden müssen.
es geht noch wesentlich einfacher, wenn beim ersetzten eine neue Spalte gebildet und diese für den Table.FuzzyNestedJoin verwendet wird, da dann die hilfsweisen Ersetzungen nicht mehr rückgängig gemacht werden müssen.
Code:
let
// ---------------- interne Funktionen ---------------------------------------------------
fx_replace = each List.Accumulate(LB_Replace, _,
(st, cur) => Text.Replace(Text.From(st), Text.From(cur{0}), (cur{1}))),
//----------------------------------------------------------------------------------------
LB_Replace = List.Buffer(Table.ToRows(Replacements_Alt_Neu)),
Source = Excel.CurrentWorkbook(){[Name="Tabelle1"]}[Content],
A_for_merge = Table.AddColumn(Source, "A_for_merge", each fx_replace([Artikel])),
Change_Type = Table.TransformColumnTypes(A_for_merge,{{"Artikel", type text}, {"A_for_merge", type text}}),
Fuzzy_Merge = Table.FuzzyNestedJoin(Change_Type,
{"A_for_merge"}, Change_Type, {"A_for_merge"}, "Merge_result",
JoinKind.LeftOuter, [IgnoreCase=true, IgnoreSpace=true, Threshold=0.8]),
Expand_Merge = Table.ExpandTableColumn(Fuzzy_Merge, "Merge_result", {"PZN", "Artikel"}, {"PZN.1", "Artikel.1"}),
Col_Sorthlp = Table.AddColumn(Expand_Merge, "Sorthlp", each if [PZN] = [PZN.1] then 1 else 2),
Sort_Table = Table.Sort(Col_Sorthlp, {{"Artikel", Order.Ascending},
{"Sorthlp", Order.Ascending},
{"Artikel.1", Order.Ascending} }),
Keep_needed = Table.RemoveColumns(Sort_Table,{"A_for_merge", "Sorthlp"})
in
Keep_needed