代码之家  ›  专栏  ›  技术社区  ›  plm

我需要使用Power Query找到最接近的5分钟时间

  •  1
  • plm  · 技术社区  · 2 年前

    我在Excel中有两列有时间,我需要将一列四舍五入到最接近的5分钟,另一列四入到最靠近的5分钟。

    例如:

    8:24将四舍五入到8:20

    15:34将四舍五入到15:35

    在Excel中,我会使用以下公式:

    =FLOOR(A1,"00:05")
    
    =CEILING(A1,"00:05")
    

    我在Power Query中找不到等效的,我得到的最接近的是 Time.StartOfHour ,我需要的是相当于 Time.StartOf5Minutes 和 Time.EndOf5Minutes !

    1 回复  |  直到 2 年前
        1
  •  3
  •   Roman Marusyk S Kotra    2 年前

    我为类似的任务使用了自定义函数

    RoundDown = (Time as time) as time =>
    let
        Minutes = Time.Hour(Time) * 60 + Time.Minute(Time),
        RoundedMinutes = Number.RoundDown(Minutes / 5) * 5,
        Result = #time(0, 0, 0) + #duration(0, 0, RoundedMinutes, 0)
    in
        Result
    

    和

    RoundUp = (Time as time) as time =>
    let
        Minutes = Time.Hour(Time) * 60 + Time.Minute(Time),
        RoundedMinutes = Number.RoundUp(Minutes / 5) * 5,
        Result = #time(0, 0, 0) + #duration(0, 0, RoundedMinutes, 0)
    in
        Result
    

    例子

    let
      Source = Table.FromRecords({
            [Column1 = #time(1, 12, 0)]
      }),
    
      Down = Table.AddColumn(Source, "Down", each RoundDown([Column1]), type time),
      Up = Table.AddColumn(Down, "Up", each RoundUp([Column1]), type time)
      ...
    in
      Up
    

    enter image description here