Power Query - manuelle Werte
#11
(08.11.2024, 12:14)ws-53 schrieb: Natürlich lässt sich das realisieren. Aber warum willst du den Bestand immer wieder manuell erfassen, wenn er doch iwo als Tabelle verfügbar sein müsste?

Das Problem bei der manuellen Erfassung des Bestands ist, dass Bestandsveränderungen, die du nicht einträgst, zu falschen Ergebnissen führen.

Der Bestand ist leider nicht verfügbar, da unsere Floats sich ständig verändern und man zum Zeitpunkt des erstellen des Files und zum Zeitpunkt der effektive Bestellung in den entsprechenden Lägern teilweise Stunden vergehen und somit die Bestände nicht mehr aktuell sind.

Das durch die manuelle Erfassung Fehler passieren können ist uns bekannt, lässt sicher aber leider nicht vollständig vermeiden. Allerdings wären wir durch Berücksichtigung des vorhanden Stocks schon einen deutlichen Schritt näher zur Vermeidung von Waste.
Antworten Top
#12
Jetzt ist mir ein anderes Problem aufgefallen, dass du wohl bisher noch nicht bedacht hast. Wie es scheint hast du in deiner Quelltabelle ab Spalte K täglich wechselnde Überschriften. Das wird aber in deinen bisherigen Abfragen noch nicht berücksichtigt und führt somit zwangsläufig zum Abbruch der Abfragen, wenn neue Datumswerte kommen.

Insofern müssen einige Teile der Abfragen dynamisch gestaltet werden. Das ist mit PQ auch möglich, ich muss mir aber erst eine Mappe suchen, in der ich das schon einmal realisiert habe. Das ist halt schon ein wenige mehr, als die PQ-Schritte, die sich einfach zusammenklicken lassen.

Es gibt aber evtl. eine trickreiche einfache Lösung für dieses Problem. Dies muss ich aber zuerst einmal testen.
[-] Folgende(r) 1 Nutzer sagt Danke an ws-53 für diesen Beitrag:
  • Hoppolero
Antworten Top
#13
...das ginge mit Table.RenameColumns(...)
Wäre soweit relativ unproblematisch , wenn die zu ändernde Spalte(n) immer an der/den gleiche(n) Position(en) wäre(n).

Sehr schönes Tutorial zum Thema
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben.
Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.

Ciao, Ralf

[-] Folgende(r) 1 Nutzer sagt Danke an Ralf A für diesen Beitrag:
  • Hoppolero
Antworten Top
#14
Hallo Ralf,

schönes Tutorial, nutzt aber nichts in diesem Fall, da sich ja die Überschriften der Datumsspalten jeden Tag ändern und auch nicht ersetzt werden sollen. Dafür aber innerhalb der Abfrage zur Summenbildung genutzt werden. Ist auch kein Problem, da es auch dafür Lösungen gibt. Muss ich nur in meinem Fundus finden, bzw. erneut danach suchen.
Antworten Top
#15
(08.11.2024, 15:45)ws-53 schrieb: Hallo Ralf,

schönes Tutorial, nutzt aber nichts in diesem Fall, da sich ja die Überschriften der Datumsspalten jeden Tag ändern und auch nicht ersetzt werden sollen. Dafür aber innerhalb der Abfrage zur Summenbildung genutzt werden. Ist auch kein Problem, da es auch dafür Lösungen gibt. Muss ich nur in meinem Fundus finden, bzw. erneut danach suchen.

...stimmt... die Funktion ist zudem für den Zweck etwas overloadet. Macht aber nix. Man erkennt das Prinzip. Die Liste der Überschriften (Table.ColumnNames) braucht man ja trotzdem und schneidet den Text nach dem Leerzeichen ab ( Text.AfterDelimiter(Überschriftenliste{Listenindex}," ") & "irgendwasanderes" )
bei mehreren Spalten dann über 'ne Schleife. Geht immer was...

PS: Hab mir das gerade mal angesehen... da gibts ja mehrere Reserven usw., mit unterschiedlichen Daten... 
Mal als Beispiel:

#"Neu angeordnete Spalten2" = Table.ReorderColumns(#"Hinzugefügte benutzerdefinierte Spalte1",{"Number", "Name", "Conversion", "Forecast Version", "Purchase Deliver To", "UoM", "Ordering", "Stock", "Purchase Order", "Sum", "08.11.2024 Gross", "09.11.2024 Gross", "10.11.2024 Gross"}),

Ab hier mal eine Spalte umbenannt 
    Umbenennen = Table.RenameColumns(#"Neu angeordnete Spalten",{Spaltenliste{12},"Hallo"}),
und eine berechnete, die sich darauf bezieht, hinzugfügt...
    #"Hinzugefügte benutzerdefinierte Spalte2" = Table.AddColumn(Umbenennen, "Berechne Hallo", each Number.From([Hallo]) * 2.5)


in
    #"Hinzugefügte benutzerdefinierte Spalte2"
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben.
Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.

Ciao, Ralf

Antworten Top
#16
Ich muss mir das unbedingt anschauen und vorallem verstehen. Ich tu mich damit im Moment sehr schwer diese Formeln und Zusammenhänge zu verstehen.

Mein Problem ist, ich muss es für jemand anderen das in der Firma einmal aufbauen, dass sie mit garkeinen Excel Kenntnisen einfach Copy-PAste arbeiten können. Mit Excel komme ich zwar eigentlich gut klar, aber die Baustelle ist mir noch ein schwarzes Loch. Nur für mich würde ich wahrscheinlich diesen Aufwand garnicht betreiben.

Aber für mich ist es gerade nicht easy :D
Antworten Top
#17
Anbei eine Lösung, die mit den wechselnden Überschriften klar kommt. Ist aber nicht die eleganteste, da ja dann täglich, neue Spaltennamen entstehen, bei denen dann die zuvor eingestellte Formatierung verloren geht. Deshalb wäre es wohl eleganter, die jeweiligen Datumsangaben per Formel eine Zeile oberhalb zu zeigen und in der PQ die Spalten dann einfach 1,2,3 oder wie auch immer zu benennen.


Angehängte Dateien
.xlsx   cef - Power Query - manuelle Werte (PQ).xlsx (Größe: 36,03 KB / Downloads: 3)
[-] Folgende(r) 1 Nutzer sagt Danke an ws-53 für diesen Beitrag:
  • Hoppolero
Antworten Top
#18
Anbei nun, wie ich es machen würde, um die täglich wechselnden Spaltentitel zu vermeiden, di ja dazu führen, dass die "neuen" Spalten nach jedem Datumswechsel wieder formatiert werden müssen/sollten.


Angehängte Dateien
.xlsx   cef - Power Query - manuelle Werte (PQ) - v2.xlsx (Größe: 36,71 KB / Downloads: 3)
[-] Folgende(r) 1 Nutzer sagt Danke an ws-53 für diesen Beitrag:
  • Hoppolero
Antworten Top
#19
@Hoppolero,

...hab mir das mal genauer angesehen.... ganz schönes Chaos.... Worriedsmiley
Keine Ahnung, ob Dein Code das macht, was Du eigentlich willst, aber zu dem, was mir aufgefallen ist, folgende Anmerkungen:
  • die Spalte Stock, also die für die manuellen Einträge, gehört in nicht in die Ergebnis- sondern in die Quelltabelle
  • wenn Du sie schon in eine Ergebnistabelle einfügst (weil Du da schon etwas aufgeräumt hast), muss diese dann die Quelltabelle für die (neu) zu berechnende (Ergebnis)Tabelle sein. Keine Tabelle kann gleichzeitig Quelle und Ziel sein!
  • Das heißt in Deinem Fall, die tab_matdispo wäre dann die Quelltabelle für die endgültige Endergebnisabfrage.
  • Die Datumsspalten müssen weder umbenannt werden, noch brauchen die eine Typzuweisung (deshalb ist kein umbenennen nötig), Zudem werden die nirgendwo berechnet oder anderweitig benötigt. Und unter der Voraussetzung, dass die Spaltenanzahl und Reihenfolge immer gleich ist, kannst Du das 2-stellige Dezimalformat auch direkt für die entsprechenden Spalten (im Zieltabellenblattregister selbst) formatieren statt im M-Code anzuweisen. Falls Du sie löschen willst, dann markierst Du halt die, die Du behalten willst und löschst alle anderen...
    Falls doch ein umbenennen nötig sein sollte, dann kannst Du exemplarisch so vorgehen :
    Code:
    Spaltenliste = Table.ColumnNames(#"Neu angeordnete Spalten2"),
       Umbenennen = Table.RenameColumns(#"Neu angeordnete Spalten2",{{Text.From(Spaltenliste{10}), "Gross1"}, {Text.From(Spaltenliste{11}), "Gross2"},{Text.From(Spaltenliste{12}), "Gross3"}}),
        #"Hinzugefügte benutzerdefinierte Spalte2" = Table.AddColumn(Umbenennen , "NewStock", each [Sum] - ([Purchase Order] + [Stock Main Store])),
        UmbenennenRückgängig = Table.RenameColumns(#"Hinzugefügte benutzerdefinierte Spalte2",{{"Gross1",Text.From(Spaltenliste{10})}, {"Gross2",Text.From(Spaltenliste{11})},{"Gross3",Text.From(Spaltenliste{12})}})

  • Ansonsten... in den Geänderten Typ - Arbeitsschritten entfernst Du einfach die Spalten und Typangaben für die Datumsfelder. Somit gibt es auch keine Konflikte.
    Bsp.:
    Code:
    = Table.TransformColumnTypes(Quelle,{{"Number", Int64.Type}, {"Name", type text}, {"Conversion", type text}, {"Forecast Version", type text}, {"Purchase Deliver To", type text}, {"Stock Main Store", Int64.Type}, {"Stock Float Store", type number}, {"UoM", type text}, {"Max per Day", type number}, {"Sum", type number} })

  • Viele Schritte kannst Du zusammenfassen (Geänderte Typen, neu anordnen usw.) Aber immer die Reihenfolge und die beabsichtigte Tabelle (Arbeitsschritt) beachten. Deshalb ist es immer wichtig vorher zu überlegen, was man erreichen will. Kurzen Spicker gemacht hilft mitunter dabei.
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben.
Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.

Ciao, Ralf

[-] Folgende(r) 1 Nutzer sagt Danke an Ralf A für diesen Beitrag:
  • Hoppolero
Antworten Top
#20
@Ralf

Ich sehe Widersprüche bei deinen Aussagen zu meinen Lösungen, die danach eigentlich nicht funktionieren dürften.

Die Umbenennung über die Positionsnummer ist aber elegant.
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste