Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Power Query - Bedingte Spalte - Verzweigt
#1
Ich versuche gerade ohne unzählige Hilfsspalten folgenden Ansatz abzubilden.
ich habe in Spalte 1 das Datum und in Spalte 2 die Dauer.
Ist der Wochentag 0-4, so möchte ich die Dauer erhalten.
Ist die Dauer > 0.8:00:00, so soll 0.8:00:00 abgebildet werden.
Ist der Wochentag >4, so möchte ich die Dauer erhalten, maximal aber 0.10:00:00.

Wie ist dies nun in powerQuery umzusetzen?

Beste Grüße
.xlsx   TestValues.xlsx (Größe: 14,43 KB / Downloads: 6)


In etwa so?

if Date.DayOfWeek([Day]) > 4 and [Value] > #duration (0.08:00:00) then
Antworten Top
#2
Hallo

Geht sicher noch besser:

Code:
let
    Source = Excel.CurrentWorkbook(){[Name="Tabelle1"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Day", type datetime}, {"Value", type duration}}),
    #"Inserted Day of Week" = Table.AddColumn(#"Changed Type", "Tag der Woche", each Date.DayOfWeek([Day]), Int64.Type),
    #"Added Custom" = Table.AddColumn(#"Inserted Day of Week", "08 Stunden", each "0.08:00:00"),
    #"Changed Type1" = Table.TransformColumnTypes(#"Added Custom",{{"08 Stunden", type duration}}),
    #"Added Custom1" = Table.AddColumn(#"Changed Type1", "10 Stunden", each "0.10:00:00"),
    #"Changed Type2" = Table.TransformColumnTypes(#"Added Custom1",{{"10 Stunden", type duration}}),
    #"Added Conditional Column" = Table.AddColumn(#"Changed Type2", "Benutzerdefiniert", each if [Tag der Woche] < 5 and [Value] > [08 Stunden] then [08 Stunden] else if [Tag der Woche] > 4 and [Value] > [10 Stunden] then [10 Stunden] else [Value]),
    #"Changed Type3" = Table.TransformColumnTypes(#"Added Conditional Column",{{"Benutzerdefiniert", type duration}}),
    #"Removed Columns" = Table.RemoveColumns(#"Changed Type3",{"Value", "Tag der Woche", "08 Stunden", "10 Stunden"}),
    #"Renamed Columns" = Table.RenameColumns(#"Removed Columns",{{"Benutzerdefiniert", "Value"}})
in
    #"Renamed Columns"
Wir sehen uns!
... Detlef

Meine Beiträge können Ironie oder Sarkasmus enthalten.

Antworten Top
#3
Vielen Dank!

So ähnlich habe ich es bisher auch umgesetzt.

Ist es nicht möglich dies innerhalb einer If then else umzusetzen?


Gruß
Antworten Top
#4
Bestimmt. Vielleicht bekommt es jemand anders hin.
Wir sehen uns!
... Detlef

Meine Beiträge können Ironie oder Sarkasmus enthalten.

Antworten Top
#5
so ?? 

Arbeitsblatt mit dem Namen 'Tabelle1'
ABCD
1DayValue
220.11.20180.07:10:00Di
321.11.20180.07:15:00Mi
422.11.20180.08:55:0108:00:00Do

ZelleFormatWert
A2TT.MM.JJJJ20.11.2018
C2[$-F400]h:mm:ss AM/PM
A3TT.MM.JJJJ21.11.2018
C3[$-F400]h:mm:ss AM/PM
A4TT.MM.JJJJ22.11.2018
C4[$-F400]h:mm:ss AM/PM0,333333333333333

ZelleFormel
C2=WENN(UND(ODER(TEXT(A2;"ttt")="Mo";TEXT(A2;"ttt")="Di";TEXT(A2;"ttt")="Mi";TEXT(A2;"ttt")="Do");(RECHTS(B2;LÄNGE(B2)-2)*1)>ZEIT(8;0;0));ZEIT(8;0;0);WENN(UND(ODER(TEXT(A2;"ttt")="Fr";TEXT(A2;"ttt")="Sa";TEXT(A2;"ttt")="So");(RECHTS(B2;LÄNGE(B2)-2)*1)<=ZEIT(10;0;0));(RECHTS(B2;LÄNGE(B2)-2)*1);""))
D2=TEXT(A2;"ttt")
C3=WENN(UND(ODER(TEXT(A3;"ttt")="Mo";TEXT(A3;"ttt")="Di";TEXT(A3;"ttt")="Mi";TEXT(A3;"ttt")="Do");(RECHTS(B3;LÄNGE(B3)-2)*1)>ZEIT(8;0;0));ZEIT(8;0;0);WENN(UND(ODER(TEXT(A3;"ttt")="Fr";TEXT(A3;"ttt")="Sa";TEXT(A3;"ttt")="So");(RECHTS(B3;LÄNGE(B3)-2)*1)<=ZEIT(10;0;0));(RECHTS(B3;LÄNGE(B3)-2)*1);""))
D3=TEXT(A3;"ttt")
C4=WENN(UND(ODER(TEXT(A4;"ttt")="Mo";TEXT(A4;"ttt")="Di";TEXT(A4;"ttt")="Mi";TEXT(A4;"ttt")="Do");(RECHTS(B4;LÄNGE(B4)-2)*1)>ZEIT(8;0;0));ZEIT(8;0;0);WENN(UND(ODER(TEXT(A4;"ttt")="Fr";TEXT(A4;"ttt")="Sa";TEXT(A4;"ttt")="So");(RECHTS(B4;LÄNGE(B4)-2)*1)<=ZEIT(10;0;0));(RECHTS(B4;LÄNGE(B4)-2)*1);""))
D4=TEXT(A4;"ttt")
Verwendete Systemkomponenten: [Windows (32-bit) NT 10.00] MS Excel 2016
Diese Tabelle wurde mit Tab2Html (v2.6.0) erstellt. ©Gerd alias Bamberg
Eine Menge reden, aber nichts sagen können viele...
Antworten Top
#6
Vielen Daank!

Ziel ist jedoch die Umsetzung in Power Query
Antworten Top


Gehe zu:


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