vorab - in Power Query habe ich nur gefährliches Halbwissen. Den Code unten habe ich mir tatsächlich mit chatGPT zusammen gebaut und war auch eigentlich ganz glücklich damit, ich habe nur einen Fehler mit der Spalte "KontoBezeichnung"
Erklärung:
Ich führe 12 Abfragen in einer Abfrage zusammen
Anschließend Datentypen in einzelnen Spalten ändern
Spalte hinzufügen
Spalte verschieben - hier sagt es mir, das Feld Kontobezeichnung wäre im Datensatz bereits vorhanden. Ich weiß schon nicht, was mit "Feld" gemeint ist - es handelt sich um eine Spalte und natürlich gibt's die, ich habe sie ja hinzugefügt und will sie nur verschieben. Das eigentliche Ziel war, diese benutzerdefinierte Spalte von Anfang an an die 2 Position im Datensatz zu verschieben. Standardmäßig landet sie immer ganz am Ende -
dann noch ein paar Spalten entfernen
Der Rest der jetzt noch kommt hat mit dem Problem nichts zu tun:
eine Liste aller Spaltennamen erstellen nach der einzufügenden Spalte "KontoBezeichnung" (denn die Quelldaten in den 12 Abfragen können eine variable Spaltenanzahl haben)
Vorzeichen in allen diesen Spalten ändern, wenn der Suchbegriff in der Spalte "Position" gefunden wurde - die Suchbegriffe hole ich aus einer weiteren Abfrage ("Suchbegriffsliste")
Der 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ügteSpalte = Table.AddColumn(GeänderterTyp, "KontoBezeichnung", each [Konto] & " " & [Bezeichnung]),
VerschobeneSpalte = Table.ReorderColumns(HinzugefügteSpalte, List.InsertRange(Table.ColumnNames(HinzugefügteSpalte), 1, {"KontoBezeichnung"})),
EntfernteSpalten = Table.RemoveColumns(VerschobeneSpalte, {"Konto", "Bezeichnung", "Gesamt"}),
// Definieren Sie Ihre Suchbegriffe und die zugehörigen Vorzeichen
// Laden Sie die Suchbegriffsliste in eine separate Abfrage
SuchbegriffslisteAbfrage = Suchbegriffsliste,
Suchbegriffe = SuchbegriffslisteAbfrage[Liste],
Vorzeichen = {-1, -1}, // Fügen Sie die entsprechenden Vorzeichen hinzu
// Hier wird eine Liste der Spaltennamen in den Quelldaten erstellt, die nach "KontoBezeichnung" kommen
SpaltenNamen = Table.ColumnNames(EntfernteSpalten),
IndexStart = List.PositionOf(SpaltenNamen, "KontoBezeichnung") + 1,
SpaltenNachKontoBezeichnung = List.Skip(SpaltenNamen, IndexStart),
// Diese Schritte führen die Vorzeichenänderung in den ausgewählten Spalten durch
// Verwenden Sie die Suchbegriffsliste in Ihren Schritten
VorzeichenÄndern = List.Accumulate(
SpaltenNachKontoBezeichnung,
EntfernteSpalten,
(table, currentColumn) =>
let
Index = List.PositionOf(SpaltenNachKontoBezeichnung, currentColumn),
VorzeichenWert = if List.Contains(Suchbegriffe, currentColumn) then Vorzeichen{Index} else -1, // Standardvorzeichen 1
GeänderteSpalte = Table.TransformColumns(table, {{currentColumn, each _ * VorzeichenWert}})
in
GeänderteSpalte
)
// ...
in
VorzeichenÄndern
Wäre echt toll, wenn mir hier jmd auf die Sprünge helfen kann. Selbst ChatGPT sagt, ich möge mich doch bitte an eine Community wenden wenn der Fehler weiter auftritt... mach ich gerade ;)