Ich trage die Tagesstunden von Mitarbeitern in eine Tabelle ein (Tabelle A1:I4).
Jetzt sollen diese Daten via Schnittstelle in ein Programm importiert werden. Die Schnittstelle sieht vor, dass für jede Zeiterfassung eine Zeile geschrieben werden soll. Wie bekomme ich nun die in obiger Tabelle in einer Zeile erfassten Uhrzeiten auf drei Zeilen aufgeteilt (gelb hinterlegt: C8:D16)?
05.06.2024, 13:50 (Dieser Beitrag wurde zuletzt bearbeitet: 05.06.2024, 13:51 von Der Steuerfuzzi.)
Hallo,
Du könntest PowerQuery verwenden. Die ersten beiden Spalten mit den Namen auswählen und unter "Transformieren" den Menüeintrag "andere Spalten entpivotieren" auswählen.
Ich hatte mit PowerQuery bisher noch nicht zu tun.
Ich habe versucht deinen Ratschlag umzusetzen. Wenn ich die zu entpivotieren Spalten auswähle und auf "nur ausgewählte Spalten entpivotieren" klicke erzeugt er mir 6 Zeilen, anstatt drei.
Wie muss ich es nun anstellen, dass ich die von - bis Zeilen eine eine Zeile bekomme?
Ich habe mir da mal angesehen. Ganz so einfach, wie ich es mir gedacht hatte, sieht es nicht aus. Ich habe mal eine PQ-Abfrage erstellt:
Code:
let Quelle = Excel.CurrentWorkbook(){[Name="Tabelle1"]}[Content], #"Geänderter Typ" = Table.TransformColumnTypes(Quelle,{{"Name", type text}, {"Vorname", type text}, {"von1", type number}, {"bis1", type number}, {"von2", type number}, {"bis2", type number}, {"von3", type number}, {"bis3", type number}, {"Summe Std.", type number}}), #"Entpivotierte andere Spalten" = Table.UnpivotOtherColumns(#"Geänderter Typ", {"Name", "Vorname"}, "Attribut", "Wert"), #"Gefilterte Zeilen" = Table.SelectRows(#"Entpivotierte andere Spalten", each ([Attribut] <> "Summe Std.")), #"Spaltentrennung nach Zeichenwechsel" = Table.SplitColumn(#"Gefilterte Zeilen", "Attribut", Splitter.SplitTextByCharacterTransition((c) => not List.Contains({"0".."9"}, c), {"0".."9"}), {"Attribut.1", "Attribut.2"}), #"Pivotierte Spalte" = Table.Pivot(#"Spaltentrennung nach Zeichenwechsel", List.Distinct(#"Spaltentrennung nach Zeichenwechsel"[Attribut.1]), "Attribut.1", "Wert"), #"Hinzugefügte benutzerdefinierte Spalte" = Table.AddColumn(#"Pivotierte Spalte", "Zeit", each ([bis]-[von])*24) in #"Hinzugefügte benutzerdefinierte Spalte"
Kopiere diesen Code in den PowerQuery-Editor unter "Ansicht" - "Erweiterter Editor" (lösche vorher alles was darin steht). Danach kannst Du die einzelnen Schritte nachvollziehen.
ganz höfliche Frage: ohne PQ, oder sonstwie Schnickschnack. Einfach nur simples logisches Denken!
Warum setzt du nicht in Spalte I, J, K, die Teilsumme 1-3 pro Mitarbeiter ein, und die Gesamtzeit in Spalte L. Das ist m.E. fiel übersichtlicher als die Mitarbeiter in drei Zeilen zu wiederholen. Ist nur ein Vorschlag von mir.
erster Post schrieb:Jetzt sollen diese Daten via Schnittstelle in ein Programm importiert werden. Die Schnittstelle sieht vor, dass für jede Zeiterfassung eine Zeile geschrieben werden soll
Viele Grüße derHöpp
Folgende(r) 1 Nutzer sagt Danke an derHoepp für diesen Beitrag:1 Nutzer sagt Danke an derHoepp für diesen Beitrag 28 • Gast 123