let // Parameter aus benannten Bereichen Antwortoptionen = Excel.CurrentWorkbook(){[Name="Antworten"]}[Content]{0}[Column1], AntworttiefeModus = Excel.CurrentWorkbook(){[Name="Antworttiefe"]}[Content]{0}[Column1], // Tabelle mit Antwortscores (Spalte heißt "AntwortScores") AntwortTabelleRaw = Excel.CurrentWorkbook(){[Name="AntwortScores"]}[Content], AntwortTabelle = Table.RenameColumns(AntwortTabelleRaw, {{"Column1", "AntwortScores"}}), Gefiltert = Table.SelectRows(AntwortTabelle, each Text.StartsWith([AntwortScores], "(")), Fragenanzahl = Table.RowCount(Gefiltert), // Dynamische Fragenlisten erzeugen je nach Modus FragenListen = if AntworttiefeModus = "Nein" then List.Transform({1..Fragenanzahl}, each {1..Antwortoptionen}) else let MitListen = Table.AddColumn(Gefiltert, "Antwortliste", each List.Transform( Text.Split(Text.Middle([AntwortScores], 1, Text.Length([AntwortScores]) - 2), ","), each Number.FromText(Text.Trim(_)) ) ) in MitListen[Antwortliste], // Maximale Länge der Listen bestimmen MaxLaenge = List.Max(List.Transform(FragenListen, each List.Count(_))), FragenListenGepolstert = List.Transform(FragenListen, each let l = _, fehlend = MaxLaenge - List.Count(l) in l & List.Repeat({null}, fehlend) ), // Tabellen aus Listen mit eindeutigen Spaltennamen erzeugen FragenTabellen = List.Transform( List.Zip({FragenListenGepolstert, List.Transform({1..Fragenanzahl}, each "F" & Text.From(_))}), each let liste = _{0}, spaltenname = _{1} in Table.FromList(liste, Splitter.SplitByNothing(), {spaltenname}) ), // Tabellen zu einer gemeinsamen Tabelle zusammenführen (per Spalten) FragenRaster = Table.FromColumns( List.Transform(FragenTabellen, each Table.Column(_, Table.ColumnNames(_){0})), List.Transform({1..Fragenanzahl}, each "F" & Text.From(_)) ) in FragenRaster