Das folgende Szenario kam während einer Budget- Phase auf, bei der auf Kundenebene das nächste Jahr geplant werden sollte. Für bestehende Kunden konnte ohne weiteres auf die Datenbank mit Namen, Nummer, etc zugegriffen werden. Allerdings sollten auch zwei Zeilen für „Andere Kunden“ und „Neue Kunden“ hinzugefügt werden.
Die „Anderen Kunden“ sind im Prinzip eine Zusammenfassung der restlichen Kunden, die so klein sind, dass sie nicht einzeln geplant werden müssen, während „Neue Kunden“ – nun ja, neu sind, also noch keine Stammdaten haben.
Um für diese beiden Kundengruppen das Budget zusammen mit den planbaren Kunden anzeigen zu können, müssen sie quasi als Stammdaten mit aufgenommen werden. Dazu habe ich die originäre Stammdaten- Tabelle genommen, und zwei Zeilen hinzugefügt – via Power Query!
Schauen wir uns zunächst die Beispieldaten an: ich habe hier 4 Kunden mit Nummer, Name und Budget-Wert:
Um in Power Query die Zeilen hinzuzufügen, müssen die Rohdaten erst einmal per Daten / Aus Tabelle/Bereich in den Power Query Editor geladen werden. Anschließend werde ich im Erweiterten Editor arbeiten.
Die Formel, die wir verwenden müssen, lautet:
Table.InsertRows(table as table, offset as number, rows as list) as table
let
Quelle = Excel.CurrentWorkbook(){[Name="Tabelle1"]}[Content],
#"Geänderter Typ" = Table.TransformColumnTypes(Quelle,{{"Kundennummer", Int64.Type}, {"Kundenname", type text}, {"Budget", Int64.Type}}),
#"Hinzugefügte Zeilen" = Table.InsertRows(#"Geänderter Typ", 0,
{
[Kundennummer = "Kunde andere", Kundenname = "Kunde andere", Budget = 3000],
[Kundennummer = "Kunde neu", Kundenname = "Kunde neu", Budget = 2000]
})
in
#"Hinzugefügte Zeilen"
Links ist das komplette let-Statement, der wichtige Teil aber beginnt bei dem Schritt #“Hinzugefügte Zeilen“.
Die Tabelle ist wie üblich der vorangegangene Schritt, dann kommen die Bestandteile:
- offset: ist die Zeile, an der die neuen Zeilen hinzugefügt werden sollen. Da meine Stammdaten üblicherweise weiter wachsen, platziere ich die manuellen Zeilen einfach an den Anfang, also 0
- rows as list: hier muss jede einzelne Spalte aufgeführt werden sowie der Inhalt der neuen Zeile. Text dabei in Anführungszeichen, Zahlen ohne. Die Abgrenzung von mehreren neuen Zeilen erfolgt durch die Separierung der […] durch Komma.
Beim Schließen und Laden in Excel kommt es zu einem Fehler, den ich auch noch kurz erläutern möchte:
Der zweite Schritt im Let-Statement passiert meist automatisch und ist daher vielleicht nicht immer bewusst: er verändert den Typ einer jeden Spalte, unter anderem die Spalte Kundennummer in Int64.Type, also eine Ganzzahl. Die beiden eingefügten Zeilen haben hier aber keine Zahl, sondern Text. Daher ergeben sich zwei Möglichkeiten zur Beseitigung der Fehlermeldung: entweder gibt man hier eine Dummy-Zahl ein, die in den Stammdaten nicht vorkommen wird (z.B. weil sie zu einem anderen Nummernkreis gehört), oder man ändert den Typ der Spalte zu Text.