Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1948to1952
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Hinzufügen benutzerdefinierter Spalten in Power Query

Hinzufügen benutzerdefinierter Spalten in Power Query
06.10.2023 12:57:55
EasyD
Hallo liebes Forum,

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 ;)

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Hinzufügen benutzerdefinierter Spalten in Power Query
08.10.2023 18:12:44
Jan
Hallo

Wer soll das nach bauen zum Testen...............?
Wie wäre es mit Beispieldatein und einem Wunschergebnis?
AW: Hinzufügen benutzerdefinierter Spalten in Power Query
09.10.2023 15:27:34
EasyD
Hallo Jan

Danke für dein Feedback, aber die Datei hochladen fällt leider (wie so oft) aus, da vertraulich und das Entfremden würde mir nur graue Haare bescheren.

Ich werde mir Luschi's Anregung mal in ruhe zu Gemüte führen, ich glaube verstanden zu haben was das Problem sein könnte.

Trotzdem Danke!
AW: Hinzufügen benutzerdefinierter Spalten in Power Query
09.10.2023 08:43:02
Luschi
Hallo EasyD,

mit:
VerschobeneSpalte = Table.ReorderColumns(HinzugefügteSpalte,
       List.InsertRange(Table.ColumnNames(HinzugefügteSpalte), 1, {"KontoBezeichnung"})),
fügtst Du das Listen-Element ein 2. mal ein, denn in Table.ColumnNames(HinzugefügteSpalte) ist ja der gewünschte Spaltenname schon enthalten.
Es gibt wohl keine eingebaute PQ-List-Funktion, mit der man die Listenelemente neu strukturieren kann. Ich mach das so:
let

//Listenwert, der verschoben werden soll
x = {"wir"},
//Liste, in der gesucht wird
L_1 = {"ich","du", "er", "sie", "es", "wir", "ihr", "sie"},
//Listenelement 'x' entfernen
L_2 = List.RemoveItems(L_1, x),
//und an neuer/gewünschter Position (hier an 1. Stelle) wieder einfügen
L_3 = List.InsertRange(L_2, 0, x)
in
L_3
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Hinzufügen benutzerdefinierter Spalten in Power Query
09.10.2023 15:28:58
EasyD
Hallo Luschi,

Danke für diesen Einwurf, ich muss mir das in Ruhe anschauen, da ich ja im Moment noch nur an der Oberfläche kratze bei PQ...
Feedback folgt!

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige