Office-Fragen.de

Normale Version: Spalten zusammenfassen, Werte untereinander
Sie sehen gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Lösung gefunden:

Code:
let
    Quelle = Excel.CurrentWorkbook(){[Name="Tabelle1"]}[Content],
    #"Geänderter Typ" = Table.TransformColumnTypes(Quelle,{{"EZ1", type text}, {"EHZ", type text}}),
    #"Gruppierte Zeilen" = Table.Group(#"Geänderter Typ", {"EZ1"}, {{"grp", each _, type table [EZ1=nullable text, EHZ=nullable text]}}),
    #"Sortierte Zeilen" = Table.Sort(#"Gruppierte Zeilen",{{"EZ1", Order.Ascending}}),
    #"Hinzugefügte benutzerdefinierte Spalte" = Table.AddColumn(#"Sortierte Zeilen", "Liste", each [grp][EHZ]),
    #"Extrahierte Werte" = Table.TransformColumns(#"Hinzugefügte benutzerdefinierte Spalte", {"Liste", each Text.Combine(List.Transform(_, Text.From), "="), type text}),
    #"Spalte nach Trennzeichen teilen" = Table.SplitColumn(#"Extrahierte Werte", "Liste", Splitter.SplitTextByDelimiter("=", QuoteStyle.Csv), {"Liste.1", "Liste.2", "Liste.3", "Liste.4", "Liste.5", "Liste.6", "Liste.7"}),
    #"Geänderter Typ1" = Table.TransformColumnTypes(#"Spalte nach Trennzeichen teilen",{{"Liste.1", type text}, {"Liste.2", type text}, {"Liste.3", type text}, {"Liste.4", type text}, {"Liste.5", type text}, {"Liste.6", type text}, {"Liste.7", type text}}),
    #"Entfernte Spalten" = Table.RemoveColumns(#"Geänderter Typ1",{"grp"}),
    #"Transponierte Tabelle" = Table.Transpose(#"Entfernte Spalten"),
    #"Höher gestufte Header" = Table.PromoteHeaders(#"Transponierte Tabelle", [PromoteAllScalars=true]),
    #"Geänderter Typ2" = Table.TransformColumnTypes(#"Höher gestufte Header",{{"12", type text}, {"13", type text}, {"14", type text}, {"A3", type text}, {"33", type text}, {"11", type text}})
in
    #"Geänderter Typ2"

Quelle Videos von SSBI-BLOG

Wahrscheinlich geht das noch einfacher, aber es funktioniert.

Einen schönen Tag noch
Wolf-Tilmann
Moin,

wenn Du diesen Code auf das Beispiel der Tabelle1 aus Deinem Eröffnungspost anwendest, erhältst Du nur einen Fehler. Warum?
Weil Du im letzten Schritt  bei der Typänderung auf die Spalte 14 zugreifst, die es aber in der ursprünglichen Tabelle nicht als Wert gibt. Das heißt, Du bist bei der praktizierten, statischen Verwendung sowohl bei der Anzahl als auch in der Spaltenbenennung gebunden und jede Abweichung davon wird bestraft. Deshalb wäre eine dynamische Anwendung empfehlenswert.

Bsp.: (diesmal versuche ich den M-Code nicht als PHP Code zu posten... Smile )

Code:
let
    Quelle = Excel.CurrentWorkbook(){[Name="Tabelle1"]}[Content],
    #"Geänderter Typ" = Table.TransformColumnTypes(Quelle,{{"EZ1", type text}, {"EHZ", type text}}),
    Anzahl = Table.Group(#"Geänderter Typ", {"EZ1"}, {{"Anzahl", each Table.RowCount(_), Int64.Type}}),
    ListMax = List.Max( Anzahl[Anzahl])-1,
    #"Gruppierte Zeilen" = Table.Group(#"Geänderter Typ", {"EZ1"}, {{"grp", each _, type table [EZ1=nullable text, EHZ=nullable text]}}),
    Sort = Table.Sort(#"Gruppierte Zeilen",{{"EZ1", Order.Ascending}}),
    NSPL = List.Distinct(Sort[EZ1]),
    #"Hinzugefügte benutzerdefinierte Spalte" = Table.AddColumn(Sort, "Liste", each [grp][EHZ]),
    #"Extrahierte Werte" = Table.TransformColumns(#"Hinzugefügte benutzerdefinierte Spalte", {"Liste", each Text.Combine(List.Transform(_, Text.From), "="), type text}),
    #"Spalte nach Trennzeichen teilen" = Table.SplitColumn(#"Extrahierte Werte", "Liste", Splitter.SplitTextByDelimiter("=", QuoteStyle.Csv), {Text.From(1)..Text.From(ListMax)}),
    #"Entfernte Spalten" = Table.RemoveColumns(#"Spalte nach Trennzeichen teilen",{"grp"}),
    #"Transponierte Tabelle" = Table.Transpose(#"Entfernte Spalten"),
    Header = Table.PromoteHeaders(#"Transponierte Tabelle", [PromoteAllScalars=true]),
    TypZuweisungen = List.Transform(NSPL, each {_, type text}),
    GeaenderteTypen = Table.TransformColumnTypes(Header, TypZuweisungen)
in
    GeaenderteTypen

...wobei... als PHP Code sah es schöner aus... Cool

Aber hiermit bist Du auch flexibler bei Änderungen/Ergänzungen/Löschungen in EZ1...
Hallo,

ich habe jetzt erst gesehen, dass es hier weiter gegangen ist. Die DropDowns dynamisch zu füllen kann man mit den neuen Funktionen ganz einfach. Die LET habe ich auf ein anderes Tabellenblatt verfrachtet. So bleiben nur 2 kleine Listen sichtbar. Besser ist aber dies ganz ohne LET siehe Blatt "2.Lösung" Das ist dann total simpel.
[attachment=1575]


Gruß Uwe
Zitat:... nur wie kann ich die neu geschaffenen Spalten als Quelle für Dropdownfelder nutzen?

Wie viele Spalten können es denn in deiner Echtumgebung werden?
Seiten: 1 2