You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Power Query计算剩余月份报错,求无需新增日期列的解决方案

Power Query计算剩余月份数报错的解决方法

问题根源

你原来的代码靠“总天数除以平均每月天数”来算月份差,这种方法不仅精度差,还没处理fEndDate为空、结束日期早于当前日期这些边界情况,很容易触发报错。

修正代码

直接用Power Query自带的**Date.MonthsBetween**函数,精准计算月份差,同时无需新增当前日期列:

#"Added Custom1" = Table.AddColumn(#"Filtered Rows", "Payments Left", each 
    let
        currentDate = Date.From(DateTime.LocalNow())
    in
        if [fEndDate] <> null then
            Number.Round(Date.MonthsBetween(currentDate, [fEndDate]), 0) * -1
        else
            null // 处理fEndDate为空的场景
)

关键说明:

  • **Date.MonthsBetween(起始日期, 结束日期)**返回的是起始到结束的月份差,要得到“剩余月份”(结束日期减当前日期),得乘-1转方向
  • 增加了空值判断,避免空日期导致的报错
  • 把当前日期放在let块里,每行只计算一次,比原代码效率更高

进阶优化(非负结果)

如果希望结束日期早于当前日期时显示0(而非负数),可以调整为:

#"Added Custom1" = Table.AddColumn(#"Filtered Rows", "Payments Left", each 
    let
        currentDate = Date.From(DateTime.LocalNow())
    in
        if [fEndDate] <> null then
            Number.Max(0, Number.Round(Date.MonthsBetween(currentDate, [fEndDate]), 0) * -1)
        else
            null
)

内容的提问来源于stack exchange,提问作者Peter Mogford

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 20:58:21