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
相关产品推荐
相关产品推荐

