如何用Excel提取指定列含X的条目生成已阅读规程人员清单?
Excel提取已阅读规程人员名单的解决方案
方法1:动态数组公式(Excel 365/2021及以上版本)
如果你的Excel支持动态数组,这是最简便的方法:
- 假设原数据在
Sheet1,A列是姓名,B列对应「已阅读规程001」,C列对应「已阅读规程002」 - 在输出表
Sheet2的A2单元格输入:
按回车后,公式会自动溢出所有符合条件的姓名=FILTER(Sheet1!A:A,Sheet1!B:B="X","") - 同理,
Sheet2的B2单元格输入:=FILTER(Sheet1!A:A,Sheet1!C:C="X","")
方法2:传统数组公式(旧版Excel)
针对不支持动态数组的旧版Excel,用INDEX+SMALL+IF组合实现:
- 在
Sheet2的A2单元格输入以下公式,按Ctrl+Shift+Enter执行数组公式:
下拉填充单元格,直到出现空值为止=IFERROR(INDEX(Sheet1!$A:$A,SMALL(IF(Sheet1!$B:$B="X",ROW(Sheet1!$B:$B)),ROW(A1))),"") - 对应规程002的B2单元格公式:
同样下拉填充=IFERROR(INDEX(Sheet1!$A:$A,SMALL(IF(Sheet1!$C:$C="X",ROW(Sheet1!$C:$C)),ROW(B1))),"")
方法3:Power Query(适合大数据量/需重复更新场景)
如果数据量较大,或者需要定期更新清单,用Power Query更高效:
- 打开原数据所在的
Sheet1,选中数据区域,点击「数据」选项卡→「从表格/区域」(若提示表格有标题,勾选确认) - 在Power Query编辑器中:
- 选中「姓名」列,点击「转换」选项卡→「逆透视列」→「逆透视其他列」,得到「姓名」「属性」「值」三列
- 筛选「值」列,只保留等于
X的行 - 添加索引列:点击「添加列」→「索引列」→「从1开始」
- 点击「属性」列,然后「转换」→「分组依据」,分组列选「属性」,新列名设为「行号」,操作选「所有行」
- 展开「行号」列,添加新的索引列(从1开始),然后删除多余列
- 点击「转换」→「透视列」,行选新的索引列,列选「属性」,值选「姓名」,聚合值选「不要聚合」
- 点击「关闭并上载」,将结果导入到新工作表,调整格式即可
为什么LOOKUP/VLOOKUP不行?
LOOKUP和VLOOKUP默认只会返回第一个匹配到的结果,无法一次性提取所有符合条件的条目,所以不适合这种需要批量提取多结果的场景。
内容的提问来源于stack exchange,提问作者chickenjones44
相关产品推荐
相关产品推荐

