Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Power Query Zellen mit null

Power Query Zellen mit null
05.09.2024 16:56:19
Sven
Hallo,

ich habe im Power Query eine Abfrage zu einem Ordner erstellt in der ein Lagerbestand pro Monat angezeigt werden soll. Die Monate sollen nebeneinander und nicht untereinander stehen. Wie bekomme ich die Daten des jeweiligen Monats in 1 Zeile, also das di "null" weg sind?

Ausgang
Userbild


So soll es aussehen
Userbild


Danke schon mal im Voraus

Sven
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Power Query Zellen mit null
05.09.2024 21:29:29
Luschi
Hallo Sven,

hier noch eine dynamische Lösung für die Gruppen- / Summenbildung in PQ.
Jetzt ist es unerheblich, wie viele Monate an der Summenbildung beteiligt sein werden.
https://www.herber.de/bbs/user/172031.xlsx

Gruß von Luschi
aus klein-Paris


Anzeige
AW: Power Query Zellen mit null
05.09.2024 22:04:55
Yal
Hallo Luschi,

da kommen, wie Du es gemeint hattest, dein C++ Herzblutt gut zur Geltung :-)
Ich frage mich nur, warum so kompliziert. Es reicht auch, die Werte-Spalte zu entpivotieren (Artikel-Spalte markieren, andere Spalten entpivotieren) und anschliessend zu repivotieren, da automatisch eine Summe gebildet wird:
let

Quelle = Excel.CurrentWorkbook(){[Name="tab_Obst"]}[Content],
#"Entpivotierte andere Spalten" = Table.UnpivotOtherColumns(Quelle, {"Artikel"}, "Attribut", "Wert"),
#"Pivotierte Spalte" = Table.Pivot(#"Entpivotierte andere Spalten", List.Distinct(#"Entpivotierte andere Spalten"[Attribut]), "Attribut", "Wert", List.Sum)
in
#"Pivotierte Spalte"
(Code nur durch klicken entstanden)

Es hat nur das Nachteil, dass es die Monat durcheinander bringt. Ich selber würde nicht pivotieren, sonden in einer Pivot ausgeben. Da wären aber die Datum auch alphabetisch sortiert (April vorn).

Daher in PQ ein Datum erzeugen, um eine richtige Reihenfolge vor dem repivotieren zu errichten:
let

Quelle = Excel.CurrentWorkbook(){[Name="tab_Obst"]}[Content],
#"Entpivotierte andere Spalten" = Table.UnpivotOtherColumns(Quelle, {"Artikel"}, "Attribut", "Wert"),
#"Hinzugefügte benutzerdefinierte Spalte" = Table.AddColumn(#"Entpivotierte andere Spalten", "Datum", each Date.From("1. " & Text.AfterDelimiter([Attribut], " ") & " 2024")),
#"Sortierte Zeilen" = Table.Sort(#"Hinzugefügte benutzerdefinierte Spalte",{{"Datum", Order.Ascending}}),
#"Entfernte Spalten" = Table.RemoveColumns(#"Sortierte Zeilen",{"Datum"}),
#"Pivotierte Spalte" = Table.Pivot(#"Entfernte Spalten", List.Distinct(#"Entfernte Spalten"[Attribut]), "Attribut", "Wert", List.Sum)
in
#"Pivotierte Spalte"


oder, kürzer und schöner, nur echte Datum, um diese in der Pivot als Monat (durch automatische Gruppierung von Datum) zu haben:
let

Quelle = Excel.CurrentWorkbook(){[Name="tab_Obst"]}[Content],
#"Entpivotierte andere Spalten" = Table.UnpivotOtherColumns(Quelle, {"Artikel"}, "Datum", "Wert"),
#"Datum extrahieren" = Table.TransformColumns(#"Entpivotierte andere Spalten", {"Datum", each Date.From(Text.Replace(_, "Bestand", "1.") & " 2024"), type date})
in
#"Datum extrahieren"


@Sven: Bestandswert in einer Pivottable:
Pivottable sind eine Summierungsmaschine. Leider sind Bestand nichts, was man summieren kann. Besser wäre, falls verfügbar, die Zugänge und die Abgänge zu haben. Abgänge müsste man negativieren. Man musste dann immer das gesamte Bewerten, sonst innerhalb eines Monats nur eine "Bestandsveränderung". Aber dafür die Summe der Zugänge und Abgänge auf Quartal und Halbjahr, einen Durchschnitt Zugang/Abgang pro Monat und somit ein Durchschnittsbestand pro Monat/Quartal/Halbjahr...


VG
Yal
Anzeige
AW: Power Query Zellen mit null
06.09.2024 17:02:07
Luschi
Hallo Yal,

ob kompliziert oder nicht, bei großen Tabellen bringt mein M-Code Geschwindigkeitsvorteile.
Deine Variante habe ich so abgewandelt, daß die Reihenfolge der Monate in der Endtabelle gewahrt bleibt:
let

Quelle = Excel.CurrentWorkbook(){[Name="tab_Obst"]}[Content],
SpaltenNamen = Table.ColumnNames(#"Quelle"),
#"Entpivotierte andere Spalten" = Table.UnpivotOtherColumns(Quelle,
List.FirstN(SpaltenNamen,1), "Attribut", "Wert"),
#"Pivotierte Spalte" = Table.Pivot(#"Entpivotierte andere Spalten",
List.Distinct(#"Entpivotierte andere Spalten"[Attribut]), "Attribut", "Wert", List.Sum),
#"Neu angeordnete Spalten" = Table.ReorderColumns(#"Pivotierte Spalte", SpaltenNamen)
in
#"Neu angeordnete Spalten"
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Power Query Zellen mit null
06.09.2024 17:56:09
Yal
Punkt für Dich. Auf die Geschwindigkeit habe ich nicht geachtet. Der Fragende ist auf "Basiskenntnisse in Excel", ich bin schon froh, wenn er mit der einfachsten Variante zurecht kommt. Einmal im Monat muss er sich die Berechnungszeit nehmen.

Das Merken der Spaltennamen, um die Reihenfolge wieder zu herstellen, muss ich mich merken. Nicht mal der Name der erste Spalte wird damit relevant. Nice.

Schönes WE

VG
Yal
Anzeige
AW: Power Query Zellen mit null
05.09.2024 18:02:01
Yal
Hallo Sven,

Luschi hat eine schnelle, schlanke Lösung vorgeschlagen, aber mit dem Nachteil, dass diese jede Monat neuaufgebaut werden muss. Es liegt daran, dass es an den Spaltennamen gebunden ist. Nun, jede Monat kommt eine neue "Bestand MonatX" dazu, dass man nur einrichten kann, wenn es da ist.

Eine spaltenunabhängige Methode würde so aussehen:
Du hast mehrere Quellen, je eine Datei pro Monat. In jeder Datei 2 Spalten: "Artikel" und "Artikel Januar". Das Problem liegt daran, dass in jeder Datei diese zweite Spalte eine anderen Namen hat, sodass nie dieselbe Datenschema zugrunde liegt und dazu führt, dass die Daten "nebeneinander" sowohl in Spalten als auch in Zeilen zusammenkommen.

Idealerweise werden zuerst die Daten der einzelne Quellen zu einem gemeinsame Datenschema gebracht, dann die Daten zusammengebracht.
Es erfolgt durch einen Entpivotieren: Spalte "Artikel" markieren, Menü "Transformieren", "Entpivotieren", "Andere Spalten Entpivotieren". Mit dieser Vorgehensweise ist es dann egal, wie die "andere Spalten" heissen. Standardmässig werden die Information der entpivotierten Daten in zwei Spalten abgelegt: "Attribut" und "Wert".
Dann haben wir für alle Quellen mit dieselben Datenschema: 3 Spalten "Artikel", "Attribut" und "Wert".

Diese Vorverarbeitung wird in einer Funktion zur Behandlung der Datei vorgenommen, was der Power Query Assistent selber einrichtet. Dabei zu achten: Schritt 2 ist immer "geänderte Typ", was an Spaltenname gebunden ist. Diese Schritt muss gelöscht werden, um Spaltenname-unabhängig zu bleiben.

Die Daten können dann zusammen gebracht werden und bei Bedarf die Spalte "Attribut" wieder pivotiert werden, was ich vermeiden würde, weil diese Schritt eher in Excel mit einer Pivottable gemacht wird.

VG
Yal

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige