Excel中不使用FILTER函数如何按列值筛选行
非Office 365版本Excel实现按姓名筛选匹配行的方法
你可以通过以下两种常用方案实现需求,无需依赖365专属的FILTER函数:
方法1:INDEX+SMALL+IF数组公式(可自动随D2姓名变动更新结果)
操作步骤
- 假设你需要将筛选结果放在G列(对应Value1)、H列(对应Value2),先在G4输入
Value1、H4输入Value2作为表头 - 点击G5单元格,输入以下公式:
=IFERROR(INDEX(D:D,SMALL(IF($C$5:$C$14=$D$2,ROW($C$5:$C$14),99999),ROW(A1))),"")
- 旧版Excel必须按
Ctrl+Shift+Enter组合键确认输入,才能激活数组公式生效 - 把G5的公式横向拖动到H5,再选中G5和H5一起向下填充,直到单元格出现空白即代表所有匹配行已提取完成
公式逻辑说明
IF($C$5:$C$14=$D$2,ROW($C$5:$C$14),99999):遍历所有姓名行,和D2的目标姓名匹配,匹配成功返回对应行号,失败返回一个极大值SMALL(...,ROW(A1)):下拉时依次提取第1、2、N个匹配的行号INDEX(D:D,...):根据行号提取对应列的数值IFERROR(..., ""):所有匹配行提取完成后,自动显示空白,避免出现错误代码
方法2:高级筛选(无需写公式,适合单次筛选场景)
- 先构建条件区域:找任意空白单元格,比如F1输入
C(和你存姓名的C列列标题保持一致即可,你也可以提前把C4单元格补填为「姓名」,F1就填「姓名」),F2输入=$D$2 - 选中你的完整数据区域
C4:E14(包含行4的Value1、Value2表头) - 点击顶部菜单栏「数据」选项卡,选择「高级」筛选
- 在弹出的对话框中选择「将筛选结果复制到其他位置」,确认「列表区域」为
$C$4:$E$14,「条件区域」选择你刚建好的`$F$1:$F$2$,「复制到」选择你要存放结果的起始单元格比如G4,点击确定即可直接生成筛选结果
补充说明:如果你使用的是新版WPS,即使没有Office 365订阅,也原生支持
FILTER函数,可直接输入=FILTER(C5:E14,C5:C14=D2,"无匹配结果")使用。
内容的提问来源于stack exchange,提问作者weizer
相关产品推荐
相关产品推荐

