let // Zugriff auf die vorbereitete Antwortmatrix FragenRaster = qryFragenraster, // Extraktion der Kombinationenzahl als Text aus qryKombinationen KombinationenText = qryKombinationen{0}[#"Anzahl der zu betrachtenden Kombinationen"], // Umwandlung des formatierten Texts ("279.936") in eine echte Zahl KombinationenZahl = Number.From(Text.Replace(KombinationenText, ".", "")), // Extraktion der Spaltennamen aus dem Fragenraster Spalten = Table.ColumnNames(FragenRaster), // Erstellung einzelner Tabellen je Spalte mit gültigen Werten EinzelTabellen = List.Transform(Spalten, each Table.FromList( List.Select( Table.Column(FragenRaster, _), each _ <> null and Text.Trim(Text.From(_)) <> "" ), Splitter.SplitByNothing(), {_} ) ), // Berechnung des Kreuzprodukts aller Antwortmöglichkeiten KreuzproduktRaw = List.Accumulate( List.Skip(EinzelTabellen, 1), EinzelTabellen{0}, (state, next) => Table.ExpandTableColumn( Table.AddColumn(state, "tmp", each next), "tmp", Table.ColumnNames(next) ) ), // Anzeigegrenze definieren Anzeigegrenze = 400000, // Ausgabe: entweder die ersten 400.000 Kombinationen oder eine leere Tabelle mit korrekter Struktur Kreuztabelle = if KombinationenZahl <= Anzeigegrenze then Table.FirstN(KreuzproduktRaw, Anzeigegrenze) else Table.SelectRows(KreuzproduktRaw, each false), // Leere Tabelle ohne Hinweistext // Liste der ursprünglichen Spalten aus dem Fragenraster OriginalSpalten = Table.ColumnNames(FragenRaster), // Bereinigte Ausgabe: nur die Spalten aus dem Fragenraster KreuztabelleBereinigt = Table.SelectColumns(Kreuztabelle, OriginalSpalten) in KreuztabelleBereinigt