Excel Power Query批量将WXX.YYYY格式周数转换为日期
在Power Query中批量转换Wxx.yyyy格式周数为标准日期
以下是对应你Excel公式逻辑的Power Query实现步骤,无需在Excel中额外写公式:
导入数据到Power Query
- 将Wxx.yyyy格式的周数数据复制到Excel后,选中数据区域,点击「数据」选项卡 → 「从表格/区域」(若未转换为表格,按提示确认转换),进入Power Query编辑器。
添加自定义转换列
- 点击「添加列」选项卡 → 「自定义列」,在弹出的对话框中输入以下M语言代码(注意将
[WeekCode]替换为你实际的列名):= let YearNum = Number.From(Text.AfterDelimiter([WeekCode], ".")), WeekNum = Number.From(Text.Remove(Text.BeforeDelimiter([WeekCode], "."), "W")), FirstDayOfYear = #date(YearNum, 1, 1), WeekdayFirstDay = Date.DayOfWeek(FirstDayOfYear, Day.Monday) + 1, CalculatedDate = Date.AddDays(FirstDayOfYear, -WeekdayFirstDay + WeekNum * 7), LastDayOfYear = #date(YearNum + 1, 1, 0) in Date.From(List.Min({CalculatedDate, LastDayOfYear}))
- 点击「添加列」选项卡 → 「自定义列」,在弹出的对话框中输入以下M语言代码(注意将
验证并加载数据
- 点击「确定」后,新生成的自定义列会显示转换后的标准日期。你可以右键删除原周数列,然后点击「关闭并上载」将处理后的数据导回Excel。
代码逻辑说明
YearNum:提取格式中的年份(如W19.2023中的2023)WeekNum:提取周数并去除前缀"W"(兼容一位数周数,如W5.2023)FirstDayOfYear:生成目标年份的1月1日WeekdayFirstDay:对应Excel的WEEKDAY(date,2),计算1月1日是周几(周一为1)CalculatedDate:按原Excel公式逻辑计算周数对应的日期LastDayOfYear:生成目标年份的12月31日(对应Excel的DATE(year+1,1,0))List.Min:确保周数过大时(如W53.2025)不会跨到下一年,取计算日期与年底日期的较小值
内容的提问来源于stack exchange,提问作者Marcel Huňady
相关产品推荐
相关产品推荐

