使用M语言计算财季时出现语法错误:缺少右括号
问题分析与解决
错误原因
你遇到的语法错误源于M语言if语句的语法不完整:条件表达式的左括号没有对应闭合的右括号。原代码中if([MonthOfYear] >= FYStartMonth then部分,条件[MonthOfYear] >= FYStartMonth被左括号包裹,但缺少右括号,导致解析器无法识别条件的结束位置,进而触发"应找到右括号')',但实际找到关键词'then'"的错误。
修正后的代码
同时原计算逻辑存在小数结果的问题,这里优化为使用Number.RoundUp确保输出整数财季:
InsertQuarter = Table.AddColumn(InsertMonth, "FiscalQuarter", each if ([MonthOfYear] >= FYStartMonth) then Number.RoundUp(([MonthOfYear] - FYStartMonth + 1) / 3) else Number.RoundUp(([MonthOfYear] + 12 - FYStartMonth + 1) / 3) ),
逻辑说明
- 当月份≥财年起始月时:计算当前月与起始月的偏移量,加1后除以3并向上取整,得到对应财季(例如财年起始月为7时,7月对应
(7-7+1)/3=1/3,向上取整为1,即Q1) - 当月份<财年起始月时:将月份加12(等效于跨至上一财年的对应月份),再按相同逻辑计算财季(例如财年起始月为7时,6月对应
(6+12-7+1)/3=12/3=4,即Q4)
内容的提问来源于stack exchange,提问作者Ben Joshua
相关产品推荐
相关产品推荐

