Power Query M:同表带过滤的上周评论查询需求
解决方案:Excel Power Query实现同Device ID的上周评论匹配
前置要求
确保你的MainData查询(基于加载区)包含以下核心字段:
DeviceID:设备唯一标识Comment:手动添加的评论列RecordDate:每条记录的日期(用来判定上周范围,若没有需先在Power Query或加载区添加)
步骤1:创建上周评论辅助查询
- 复制你的主查询(假设名为
MainData),重命名为LastWeekComments - 在
LastWeekComments中添加自定义列,计算当前记录对应的上周时间范围:// 添加上周起始日(周一为周起始,可根据需求调整Day参数) AddedLastWeekStart = Table.AddColumn(LastWeekComments, "LastWeekStart", each Date.StartOfWeek(Date.AddDays([RecordDate], -7), Day.Monday)), // 添加上周结束日 AddedLastWeekEnd = Table.AddColumn(AddedLastWeekStart, "LastWeekEnd", each Date.EndOfWeek(Date.AddDays([RecordDate], -7), Day.Monday)) - 移除无关列,仅保留
DeviceID、Comment、LastWeekStart、LastWeekEnd
步骤2:主查询关联匹配上周评论
回到MainData查询,执行合并操作:
- 点击合并查询 → 合并查询作为新列
- 合并对象选择
LastWeekComments - 设置匹配条件:
DeviceID等于LastWeekComments[DeviceID]RecordDate大于等于LastWeekComments[LastWeekStart]RecordDate小于等于LastWeekComments[LastWeekEnd]
- 合并类型选择左外部(保证无匹配的行留空)
- 展开合并后的列,仅选择
Comment字段,并重命名为LastWeekComment
步骤3:清理空值(可选)
如果需要把空值替换为空字符串,添加以下步骤:
CleanedLastWeekComments = Table.ReplaceValue(MainData, null, "", Replacer.ReplaceValue, {"LastWeekComment"})
后续宏计划的适配提示
- 刷新查询的宏代码:
ThisWorkbook.Queries("MainData").Refresh - 新增行后清除加载区数据时,确保Power Query的加载设置为“仅创建连接”或加载到指定表格,避免加载区清空导致查询报错
内容的提问来源于stack exchange,提问作者Andy
相关产品推荐
相关产品推荐

