You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Excel单元格引用链接,用Power Query/VBA提取数据表?

方法一:用Power Query动态引用单元格链接

这种方法能直接通过修改LINK工作表里的链接自动更新数据,无需重复创建查询:

  1. 导入链接列表
    切换到LINK工作表,选中A1:A20区域,点击「数据」选项卡→「从表格/区域」,根据实际情况勾选「我的表格有标题」,将列表导入Power Query编辑器。
  2. 编写自定义函数批量提取
    打开「高级编辑器」,替换默认代码为以下内容(注意替换表名和列名:比如导入链接后生成的表叫「表1」、链接列名为「Column1」,需根据实际情况调整):
    let
        源 = Excel.CurrentWorkbook(){[Name="表1"]}[Content],
        提取数据 = (链接 as text) =>
            let
                网页数据 = Web.Contents(链接),
                解析数据 = Excel.Workbook(网页数据)
            in
                解析数据{0}[Data], // 默认提取第一个工作表的数据,需调整的话修改索引值
        添加自定义列 = Table.AddColumn(源, "月度数据", each 提取数据([Column1])),
        展开数据 = Table.ExpandTableColumn(添加自定义列, "月度数据", Table.ColumnNames(添加自定义列[月度数据]{0}), Table.ColumnNames(添加自定义列[月度数据]{0}))
    in
        展开数据
    
    点击「完成」将数据加载回Excel。后续修改LINK工作表中的链接后,右键查询选择「刷新」即可更新数据。
  3. 降低文件负载
    右键查询→「属性」,取消勾选「允许后台刷新」,或设置合适的刷新频率,减少后台资源消耗。
方法二:用VBA批量提取合并数据

适合习惯用宏操作的场景,步骤更直接:

  1. 打开VBA编辑器
    按下Alt + F11打开编辑器,右键点击当前工作簿→「插入」→「模块」。
  2. 粘贴批量提取代码
    将以下代码粘贴到模块中(如需修改结果表名称,把「提取结果」替换成你想要的名称即可):
    Sub 批量提取月度数据()
        Dim wsLink As Worksheet, wsResult As Worksheet
        Dim lastRow As Long, i As Long
        Dim url As String
        Dim tempWB As Workbook
        
        Set wsLink = ThisWorkbook.Worksheets("LINK")
        ' 检查结果表是否存在,不存在则新建
        On Error Resume Next
        Set wsResult = ThisWorkbook.Worksheets("提取结果")
        On Error GoTo 0
        If wsResult Is Nothing Then
            Set wsResult = ThisWorkbook.Worksheets.Add(After:=wsLink)
            wsResult.Name = "提取结果"
        End If
        
        ' 清空旧数据(保留表头)
        wsResult.UsedRange.Offset(1).ClearContents
        
        lastRow = wsLink.Cells(wsLink.Rows.Count, "A").End(xlUp).Row
        ' 循环处理每个链接
        For i = 1 To lastRow
            url = wsLink.Cells(i, "A").Value
            If url <> "" Then
                Set tempWB = Workbooks.Open(url)
                ' 复制第一个工作表的所有数据到结果表
                tempWB.Sheets(1).UsedRange.Copy wsResult.Cells(wsResult.Rows.Count, "A").End(xlUp).Offset(1)
                tempWB.Close SaveChanges:=False
            End If
        Next i
        
        MsgBox "数据提取完成!"
    End Sub
    
  3. 运行宏
    返回Excel按下Alt + F8,选择「批量提取月度数据」点击「执行」即可。修改链接后重新运行宏就能更新数据。

内容的提问来源于stack exchange,提问作者S. Shotez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 00:38:35