mein weiterer Eigenversuch
08.11.2024 19:01:34
Christian
Hallo Luschi,
erstmal zu deiner Frage, ob ich mich in der Lage sehe, eure Vorschläge auf meine Originaldaten anzuwenden... zuerst war ich mir bei diesem M-Code selbst nicht sicher, aber jetzt weiß ich, es hat funktioniert.
Hallo Case,
ich habe deinen ersten Vorschlag versucht, selber abzuändern, was ich auf jeden Fall geschafft habe ist, dass die Spalten C und D nicht mehr sortiert werden und ich habe es auch geschafft die Sortierung nach Spalte C einzubauen. Der Code sieht jetzt so aus:
let
Quelle = Excel.CurrentWorkbook(){[Name="Tabelle7"]}[Content],
Spaltennamen = Table.ColumnNames(Quelle),
#"Spalten ab 5" = List.Skip(Spaltennamen, 4),
#"Zusammengeführte Spalten" = Table.CombineColumns(Quelle, #"Spalten ab 5",
Combiner.CombineTextByDelimiter("|", QuoteStyle.None),"Kombi"),
#"Gruppierte Zeilen" = Table.Group(#"Zusammengeführte Spalten", {"2", "3", "4"},
{
{"1", each
let
ErsteZeileText = Text.BeforeDelimiter(List.First([1]), " "),
SummenWerte = List.Sum(List.Transform(_[1], each try Number.From(Text.AfterDelimiter(_, " ")) otherwise 0))
in
ErsteZeileText & " " & Text.From(SummenWerte), type text},
{"Gruppe", each Text.Combine(_[Kombi], "|"), type text}
}),
#"Spalte Transformieren" =
let a = Table.TransformColumns(#"Gruppierte Zeilen", {{"Gruppe", each Text.Split(_, "|")}}),
b = Table.TransformColumns(a, {{"Gruppe", each List.RemoveMatchingItems(_, {""})}}),
c = Table.TransformColumns(b, {{"Gruppe", each List.Distinct(_, Comparer.OrdinalIgnoreCase)}}),
d_1 = Table.TransformColumns(c, {{"Gruppe", each
let a = _,
b = List.Transform(a, (j)=>
if Text.Contains(j, ".html") then "11-" & j
else if Text.Contains(j, ".jpg") then "12-" & j
else "10-" & j)
in List.Sort(b, Order.Ascending)}}),
d_3 = Table.TransformColumns(d_1, {{"Gruppe", each
let a = _,
b = List.Transform(a, (j)=> Text.AfterDelimiter(j, "-", 0))
in b}}),
e = Table.TransformColumns(d_3, {{"Gruppe", each Text.Combine(_, " | ")}})
in e,
#"Anzahl neue Spalten" = List.Max(
List.Transform(
#"Spalte Transformieren"[Gruppe],
each List.Count( List.Select( Text.ToList(_), each _= "|"))) ) + 1,
#"neue Spaltennamen" = List.Transform({1..#"Anzahl neue Spalten"}, each "Sp. " & Text.From(_)),
#"Spalte nach Trennzeichen teilen" = Table.SplitColumn(#"Spalte Transformieren", "Gruppe",
Splitter.SplitTextByDelimiter(" | ", QuoteStyle.Csv), #"neue Spaltennamen"),
#"Sortierte Zeilen" = Table.Sort(#"Spalte nach Trennzeichen teilen",{{"1", Order.Descending}}),
#"Entfernte Spalten" = Table.RemoveColumns(#"Sortierte Zeilen",{"1"}),
#"Hinzugefügte benutzerdefinierte Spalte" = Table.AddColumn(#"Entfernte Spalten", "Benutzerdefiniert", each if Text.Start(Text.From([3]), 2) = "tt" then 0 else Number.RandomBetween(0, 1)),
#"Sortierte Zeilen1" = Table.Sort(#"Hinzugefügte benutzerdefinierte Spalte",{{"Benutzerdefiniert", Order.Ascending}}),
#"Entfernte Spalten1" = Table.RemoveColumns(#"Sortierte Zeilen1",{"Benutzerdefiniert"})
in
#"Entfernte Spalten1"
Was meinem Wunschergebnis schon sehr nahe kommt. Was jetzt in dem Code noch fehlt, ist die Spalte A, aber da bin ich gerade dabei zu überlegen ob ich da nicht generell eine geschicktere Lösung finde, die Ziele die ich damit bezweckt habe, zu erreichen, daher fehlt dieser Teil jetzt ganz. Selbst wenn ich die Spalte wieder einführe, das mit der Anzahl der Texte hat sich auf jeden Fall erledigt und eine Kombination aus 2 Spalten [3]&[4] bekomme ich gerade noch selbst hin :-).
Damit habe ich dann jetzt erst mal eine aus meiner Sicht funktionierende Lösung.
Danke auf jeden Fall für all eure Hilfe und Unterstützung und ein schönes Wochenende
Christian