excel 两个日期/时间之间的Power Query营业时间(以分钟计)

bzzcjhmw  于 2023-05-30  发布在  其他
关注(0)|答案(1)|浏览(213)

我正在尝试编写一个M查询,以计算在M-F的营业时间8:00 - 17:00之间提交订单。我遇到了一个问题,即订单在周末或周五进入“服务审核”,但在周一提交。
例如:如果订单在2023年1月2日星期一上午8:00进行服务审核,并在2023年1月3日星期二下午12:00提交,则总分钟数= 720分钟。这与当前的代码一起工作。
如果订单在2023年1月6日星期五下午5:00进行服务审核,并在2023年1月9日下星期一上午8:10提交,则总分钟数= 10分钟。
如果订单在2023年1月7日星期六或2023年1月8日星期日的任何时间进行服务审核,并在2023年1月7日星期六或2023年1月7日星期日提交,则分钟= 0分钟

NonWorkingTime = List.Transform(List.Numbers(0,15*60), each #time(17,0,0)+#duration(0,0,_,0)),
SRReal = Table.AddColumn(SR, "Min in SRRR", each [a=Date.DayOfWeekName( Date.From([Service Review Date])),
b = [Submitted Date]-[Service Review Date],
c = if a = "Saturday" then b - #duration(2,0,0,0) else if a = "Sunday" then b - #duration(1,0,0,0) else b,
d= List.Count( List.Difference(  List.Transform(List.DateTimes([Service Review Date], Duration.TotalMinutes(c), #duration(0,0,1,0)), each Time.From(_)), NonWorkingTime))][d]),

改变`c = if a =“Friday”then B - #duration(2,0,0,0)else b,得到:
| 服务审查日期|提交日期|SR中的最小值|预期|开始日|结束日|
| - -----|- -----|- -----|- -----|- -----|- -----|
| 2023年1月1日上午8:00:00| 2023年2月1日12:00:00 PM|四三九八○| M-F 8-5|星期天|星期三|
| 2023年1月1日下午4:50:00| 2023年1月2日上午8:10:00|二十个|十个|星期天|星期一|
| 2023年1月5日上午8时00分|2023年1月8日上午8:10:00|三四三○|周四+周五|星期四|星期天|
| 2023年1月5日下午4:52:00| 2023年1月6日上午8:10:00|十八岁|十八岁|星期四|星期五|
| 2023年1月5日下午4:55:00| 2023年1月5日下午4:58:00| 3| 3|星期四|星期四|
| 2023年1月6日上午8:10:00| 2023年1月8日上午8时30分|二十个|470(星期五)|星期五|星期天|
| 2023年1月6日上午8:10:00| 2023年1月6日上午8时30分||二十个|星期五|星期五|
| 2023年1月7日下午4:50:00| 2023年1月9日上午8:10:00| 1460|十个|星期六|星期一|
| 2023年1月7日下午4:55:00| 2023年1月7日下午5:15:00| 5个|0|星期六|星期六|
| 2023年1月7日下午4:56:00| 2023年1月8日上午8:10:00|十四|0|星期六|星期天|
| 2023年1月8日上午8时00分|2023年1月9日上午8:10:00|五百五十|十个|星期天|星期一|
| 2023年1月8日12:00:00 PM| 2023年1月8日12:30:00 PM|三十|0|星期天|星期天|

f0ofjuux

f0ofjuux1#

持续时间仅为8:00-17:00 M-F

let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Service Review Date", type datetime}, {"Submitted Date", type datetime}}),
#"Added Custom" = Table.AddColumn(#"Changed Type", "Custom1", each List.DateTimes([Service Review Date], Duration.TotalMinutes([Submitted Date]-[Service Review Date]), #duration(0, 0, 1, 0))),
#"Added Custom2" = Table.AddColumn(#"Added Custom", "Minutes", each List.Sum(List.Transform([Custom1], each 
    if Date.DayOfWeekName(_) = "Saturday"
    or Date.DayOfWeekName(_) = "Sunday"
    or Time.Hour(_)<8
    or Time.Hour(_)>16 then 0  else 1))),
#"Removed Columns" = Table.RemoveColumns(#"Added Custom2",{"Custom1"})
in #"Removed Columns"

相关问题