在PowerQuery M

时间:2019-03-27 15:40:35

标签: excel powerquery m

我需要根据输入内容展开一个列表:开始日期,结束日期和应该发生某事的星期几。这需要通过在Power Query中使用M来完成。


日期范围可以跨越数周,例如:
开始日期:04/15/19
结束日期:19/04/29
星期几:1

我希望获得3行:

  • 04/15/19
  • 04/22/19
  • 04/29/19


或包含一个星期和一天:
开始日期:04/15/19
结束日期:04/15/19
星期几:1

我希望得到1行:

  • 04/15/19

我正在使用:Get date from weeknumber, dayofweek and year PowerQuery M 作为了解如何解决该问题的第一步。

谢谢。

1 个答案:

答案 0 :(得分:1)

您可以使用函数列出所选范围内的所有日期,并过滤到所选的工作日:

(DateStart as date, DateEnd as date, DayOfWeek as number) =>
let
    #"Date List" = List.Dates(DateStart,Duration.Days(DateEnd-DateStart)+1,#duration(1,0,0,0)),
    #"Date Table" = Table.FromList(#"Date List", Splitter.SplitByNothing(), {"Date"}),
    #"Changed Type" = Table.TransformColumnTypes(#"Date Table",{{"Date", type date}}),
    #"Filtered Dates" = Table.SelectRows(#"Changed Type", each (Date.DayOfWeek([Date], Day.Sunday) = DayOfWeek))
in
    #"Filtered Dates"

作为测试调用:

let
    Source = fnListWeekdaysInRange(#date(2019, 4, 15), #date(2019, 4, 29), 1)
in
    Source

哪个返回:

enter image description here