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
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.

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ß
Top
#4
Bestimmt. Vielleicht bekommt es jemand anders hin.
Wir sehen uns!
... Detlef

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

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
Top
#6
Vielen Daank!

Ziel ist jedoch die Umsetzung in Power Query
Top


Gehe zu:


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