Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Spalten zusammenfassen, Werte untereinander
#11
Wink 
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
Zitieren
#12
Smile 
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...
Zitieren
#13
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.

.xlsx   Tabelle1(gespillte Ausgabe).xlsx (Größe: 12,26 KB / Downloads: 1)


Gruß Uwe
Zitieren
#14
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?
Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste




Hinweis auf Angebot Excel-Inside - lang    Keine Lösung gefunden? Du kannst Dich gerne an unser erfahrenes Experten-Team wenden um dein Anliegen zu besprechen.
   Gerne erstellen wir auf dieser Basis ein Angebot.
   Sende deine Anfrage einfach
per E-Mail an anfrage@excel-inside.de


Powerd and supported by Excel-InsideSolutions