如何将A13至K13单元格公式复制到Power Query导入数据的最后一行
解决Power Query导入后自动复制公式到最后一行的问题
方法1:在Power Query中直接生成计算列(推荐)
如果A13-K13的公式能够转换为Power Query的M语言逻辑,可以直接在查询内添加计算列,实现刷新时自动生成对应行的计算结果,无需手动复制:
- 点击「数据」选项卡 → 找到「查询 & 连接」面板,双击目标Power Query进入编辑器
- 切换到「添加列」选项卡,点击「自定义列」
- 逐个将A-K列的Excel公式转换为M语言表达式(例如Excel的
VLOOKUP(A2, Table, 2, 0)对应M的Table.Lookup(另一个查询表, [对应列], [返回列])),完成自定义列的创建 - 点击「关闭并上载」,后续每次刷新查询时,新导入的行都会自动带上计算结果,等效于公式自动应用到所有行
方法2:用VBA事件宏自动复制公式(适合无法转M语言的复杂公式)
如果公式逻辑无法通过Power Query实现,可通过工作表变更事件宏,在Power Query刷新后自动复制A13-K13的公式到M列数据的最后一行:
- 按
Alt + F11打开VBA编辑器 - 在左侧工程窗口中,双击包含Power Query数据的目标工作表(如「Sheet1」)
- 在右侧代码窗口粘贴以下代码:
Private Sub Worksheet_Change(ByVal Target As Range) Dim lastRowM As Long ' 获取M列数据的最后一行行号 lastRowM = Me.Cells(Me.Rows.Count, "M").End(xlUp).Row ' 仅当M列数据更新时触发(Power Query刷新会修改M列) If Not Intersect(Target, Me.Range("M:M")) Is Nothing Then ' 复制A13-K13的公式到目标行 Me.Range("A13:K13").Copy Me.Range("A" & lastRowM & ":K" & lastRowM).PasteSpecial Paste:=xlPasteFormulas Application.CutCopyMode = False End If End Sub
- 将文件保存为「启用宏的工作簿(.xlsm)」格式
- 后续每次刷新Power Query后,宏会自动触发,完成公式复制
注意事项
- 若公式为相对引用,复制到新行时Excel会自动调整引用范围,符合需求
- 启用宏时需确保Excel宏安全设置允许运行此工作簿的宏
- 如果Power Query刷新会清除原有数据再导入,代码中
End(xlUp)仍能正确识别新的最后一行
内容的提问来源于stack exchange,提问作者Fred Blair
相关产品推荐
相关产品推荐

