如何将Excel中状态为pending的项目名称提取至汇总工作表?
跨Excel工作簿提取Pending状态项目名称到汇总表
方法1:公式法(适合少量工作簿,需打开源文件)
假设每个源工作簿的Sheet1中,A列是项目名称,B列是状态字段。在汇总表中,直接用FILTER函数跨工作簿引用筛选:
=FILTER('[项目清单1.xlsx]Sheet1'!$A:$A,'[项目清单1.xlsx]Sheet1'!$B:$B="pending","无pending项目")
如果要合并多个工作簿的结果,可以嵌套VSTACK函数批量整合:
=VSTACK( FILTER('[项目清单1.xlsx]Sheet1'!$A:$B,'[项目清单1.xlsx]Sheet1'!$B:$B="pending"), FILTER('[项目清单2.xlsx]Sheet1'!$A:$B,'[项目清单2.xlsx]Sheet1'!$B:$B="pending") )
⚠️ 注意:使用公式法时,所有源工作簿必须处于打开状态,否则会返回#REF!错误。
方法2:Power Query法(推荐,批量处理,无需打开源文件)
这是处理多工作簿的最优方案,步骤如下:
- 打开汇总表,切换到「数据」选项卡 → 点击「获取数据」→「从文件」→「从文件夹」
- 选择存放所有项目工作簿的文件夹,点击「确定」
- 在弹出的文件夹预览窗口中,点击「编辑」进入Power Query编辑器
- 添加自定义列提取工作表数据:
- 点击「添加列」→「自定义列」,输入以下公式(假设所有源数据都在
Sheet1,可根据实际修改表名):= Excel.Workbook([Content]){[Item="Sheet1",Kind="Sheet"]}[Data]
- 点击「添加列」→「自定义列」,输入以下公式(假设所有源数据都在
- 展开自定义列:点击自定义列右侧的展开箭头,勾选「项目名称」「状态」等需要的列,取消「使用原始列名作为前缀」选项
- 筛选Pending状态:点击「状态」列的筛选按钮,只保留
pending选项 - 按需整理数据:可以保留「源文件名」列来区分项目来自哪个工作簿,删除其他不需要的列(如路径、扩展名)
- 加载数据:点击「关闭并上载」,选择加载到汇总表的指定位置
后续要更新数据,只需点击「数据」→「全部刷新」即可自动同步所有源工作簿的pending项目。
示例结构
源工作簿(如「项目清单1.xlsx」)
| 项目名称 | 状态 |
|---|---|
| 网站改版 | pending |
| 服务器升级 | done |
| 数据迁移 | pending |
汇总表最终效果
| 源文件名 | 项目名称 | 状态 |
|---|---|---|
| 项目清单1.xlsx | 网站改版 | pending |
| 项目清单1.xlsx | 数据迁移 | pending |
| 项目清单2.xlsx | 客户端优化 | pending |
内容的提问来源于stack exchange,提问作者Bruno Marques
相关产品推荐
相关产品推荐

