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

如何用Power Query提取多Excel文件中TTP与TTL工作表间的数据?

提取Excel文件中指定工作表之间的数据(Power Query实现)

完全可行,以下是具体的Power Query实现步骤和代码:

核心思路

先获取每个Excel文件的所有工作表列表,定位目标工作表"TTP"和"TTL"的位置,筛选出处于二者之间的工作表后,加载对应数据。

步骤1:导入文件夹数据

  1. 打开Power Query,依次点击【数据】>【获取数据】>【从文件】>【从文件夹】,选择存放Excel文件的目标文件夹。
  2. 加载文件夹数据后,保留Content(文件内容)和Name(文件名)列即可。

步骤2:添加自定义列筛选中间工作表

添加一个自定义列(命名为筛选后的工作表),输入以下M代码:

let
    // 获取当前文件的所有工作表元数据
    工作表列表 = Excel.Workbook([Content], null, true)[Sheets],
    // 提取所有工作表名称
    名称列表 = List.Transform(工作表列表, each [Name]),
    // 定位TTP和TTL的位置索引
    TTP索引 = List.PositionOf(名称列表, "TTP"),
    TTL索引 = List.PositionOf(名称列表, "TTL"),
    // 筛选TTP之后、TTL之前的工作表(排除TTP和TTL本身)
    中间工作表 = if TTP索引 <> -1 and TTL索引 <> -1 and TTP索引 < TTL索引 then
        List.Range(工作表列表, TTP索引 + 1, TTL索引 - TTP索引 - 1)
    else
        {}
in
    中间工作表

代码说明

  • Excel.Workbook([Content], null, true)[Sheets]:读取当前Excel文件的所有工作表信息,包含名称、数据等字段。
  • List.PositionOf:查找"TTP"和"TTL"在工作表列表中的位置,若不存在则返回-1。
  • List.Range:截取TTP之后到TTL之前的工作表片段,仅保留中间表。
  • 逻辑判断:仅当两个目标表都存在且TTP在TTL位置靠前时,才提取中间表,避免无意义的数据加载。

步骤3:展开并处理数据

点击筛选后的工作表列右侧的展开按钮,选择【仅展开数据】,后续可根据需求调整数据类型、合并字段等。

特殊需求:按名称字典序筛选

如果你的需求是按工作表名称的字典序(而非实际位置)筛选介于"TTP"和"TTL"之间的表,可替换自定义列代码为:

let
    工作表列表 = Excel.Workbook([Content], null, true)[Sheets],
    名称列表 = List.Transform(工作表列表, each [Name]),
    // 按名称排序后筛选符合条件的名称
    中间名称 = List.Select(List.Sort(名称列表), each _ > "TTP" and _ < "TTL"),
    // 匹配对应的工作表数据
    中间工作表 = List.Select(工作表列表, each List.Contains(中间名称, [Name]))
in
    中间工作表

内容的提问来源于stack exchange,提问作者PMDSMW

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 13:20:28