Ich wusele mich gerade in PowerQuery rein und habe daher nur ein "Halbwissen", und selbst das ist eigentlich noch geprahlt.
Folgende Abfrage habe ich mir daher mit ChatGPT zusammen gebastelt, bin aber leider nicht ganz zum Ziel gekommen.
Luschi hat mit bei der gleichen Abfrage schon mit einem anderen Problem (Sortierung der Spalten) geholfen - falls du liest Luschi - Vielen Dank nochmal!
Vorab - eine Beispieldatei kann ich leider nicht hochladen, da das Entfremden der vertraulichen Daten echt zu aufwändig wäre.
Vielleicht vermag mir aber jemand auch nur bei Sichtung des Codes meinen Fehler zu zeigen.
Kurzbeschreibung:
ich füge 12 Abfragen in eine große Abfrage zusammen
Ein paar Spalten hinzufügen
Spalten neu sortieren
Datentypen ab inkl. 4. Spalte ändern, damit ich ausschließlich Dezimal-Werte habe (=Bedingung für eine funktionierende Änderung der Vorzeichen, im Original-Datensatz sind die Zahlen-Werte teilweise Text) - die Anzahl der Spalten ab der vierten Spalte ist variabel!
Ein Filterkriterium in Spalte 2 definieren (=Liste von Begriffen, Spalte "Position"), um in den so gefilterten Zeilen eine Vorzeichenänderung durchzuführen. Die Vorzeichen sollen in den Zeilen geändert werden, in denen das Filterkriterium NICHT in Spalte 2 steht.
Und jetzt kommts - im letzten Schritt "GeänderteSpalten" erhalte ich einen Fehler:
Expression.Error: Ein Wert vom Typ "Function" kann nicht in den Typ "List" konvertiert werden.
Details:
Value=[Function]
Type=[Type]
Da habe ich leider keinen Schimmer, was damit gemeint ist und wo genau ich ein Problem in dem Code habe.
Der komplette Code:
let
Quelle = Table.Combine({#"01R", #"02R", #"03R", #"04R", #"05R", #"06R", #"07R", #"08R", #"09R", #"10R", #"11R", #"12R"}),
GeänderterTyp = Table.TransformColumnTypes(Quelle, {{"Konto", type text}, {"Bezeichnung", type text}, {"Datum", type date}, {"Position", type text}}),
// Hinzugefügte Spalte "KontoBezeichnung" direkt nach "Datum" und "Position" einfügen
HinzugefügteSpalte = Table.AddColumn(GeänderterTyp, "KontoBezeichnung", each [Konto] & " " & [Bezeichnung], type text),
// Reihenfolge der Spalten anpassen
SpaltenNamen = Table.ColumnNames(HinzugefügteSpalte),
ErsteZweiSpalten = List.FirstN(SpaltenNamen, 2),
LetzteSpalte = List.LastN(SpaltenNamen, 1),
RestlicheSpalten1 = List.RemoveItems(SpaltenNamen, ErsteZweiSpalten),
RestlicheSpalten = List.RemoveItems(RestlicheSpalten1, LetzteSpalte),
NeueReihenfolge = ErsteZweiSpalten & {"KontoBezeichnung"} & RestlicheSpalten,
ReihenfolgeAngepasst = Table.ReorderColumns(HinzugefügteSpalte, NeueReihenfolge),
EntfernteSpalten = Table.RemoveColumns(ReihenfolgeAngepasst, {"Konto", "Bezeichnung", "Gesamt"}),
// Ändere den Datentyp der restlichen Spalten ab der vierten Spalte in Dezimalzahlen
SpaltenAbVierter = List.Skip(Table.ColumnNames(EntfernteSpalten), 3), // Überspringe die ersten 3 Spalten
GeänderteDatentypen = Table.TransformColumnTypes(EntfernteSpalten, List.Transform(SpaltenAbVierter, each {_, type number})),
// Definieren Sie Ihre Suchbegriffe und die zugehörigen Vorzeichen
Filterkriterium = {"Erlöse", "Umsatzerlöse", "Erlöse USt-frei", "Provisionserlöse", "Gewährte Skonti, Boni und Rabatte", "Sonstige Erlöse", "Eigenverbrauch", "Summe der Erlöse", "Gesamtleistung", "Rohgewinn", "Zwischensaldo", "Sonstige Erträge", "A.o. Erträge", "Erlöse aus Anlagenverkauf (Buchgewinn)", "Erträge aus Beteiligungen", "Grundstückserträge", "Zinsen und ähnliche Erträge", "Sonstige betriebliche Erträge", "Summe der sonstigen Erträge"},
// Vorzeichenänderung in den ausgewählten Spalten basierend auf den Filterkriterien
GeänderteSpalten = Table.TransformColumns(GeänderteDatentypen, each if List.Contains(SpaltenAbVierter, [Position]) and not List.Contains(Filterkriterium, [Position]) then -_ else _)
in
GeänderteSpalten