如何在Excel中实现基于指定分隔符的自定义筛选层级功能
如何在Excel中实现基于指定分隔符的自定义筛选层级功能
当然可以实现!Excel里有几种实用方法能帮你搞定这种基于分隔符的层级筛选,体验和日期筛选的年>月>日层级差不多,下面给你详细说两种靠谱的方案:
方案一:用Power Query生成原生层级筛选(推荐)
这个方法能直接生成和日期筛选一模一样的内嵌层级结构,操作也不算复杂:
- 选中你要处理的目标列,点击顶部菜单栏的「数据」→「从表格/区域」(如果弹出提示确认表格有标题,勾选后点击确定)
- 进入Power Query编辑器后,选中目标列,点击「转换」→「拆分列」→「按分隔符」
- 在弹出的窗口里,选择分隔符为
|,拆分方式选「拆分为列」,点击确定后,原单元格的内容会按|拆分成多列(比如「顶级|二级|三级」会拆成三列,分别对应三个层级) - 选中所有拆分出来的层级列,右键点击→「创建层次结构」→「从所选列」,此时编辑器里会生成一个带层级的组合列
- 点击「关闭并上载」,把处理后的表格加载回Excel,现在你点击表头的筛选按钮,就能看到和日期筛选一样的层级展开/折叠选项啦,点击对应层级就能快速筛选内容。
方案二:辅助列+分步筛选(适合不想用Power Query的场景)
如果你不习惯用Power Query,也可以手动拆分出层级辅助列,用原生筛选功能实现类似效果:
- 在原列旁边插入若干辅助列,对应你需要的层级(比如原列是A列,就插入B、C、D列分别对应顶级、二级、三级)
- 用拆分函数填充辅助列:
- 顶级列(B2单元格):
=IFERROR(TEXTBEFORE(A2,"|",1),"") - 二级列(C2单元格):
=IFERROR(TEXTBEFORE(TEXTAFTER(A2,"|",1),"|",1),"") - 三级列(D2单元格):
=IFERROR(TEXTAFTER(A2,"|",2),"")
注:如果你的Excel版本是2016及以前,没有TEXTBEFORE/TEXTAFTER函数,可以用LEFT+FIND组合,比如顶级列用=IFERROR(LEFT(A2,FIND("|",A2)-1),""),二级列用=IFERROR(MID(A2,FIND("|",A2)+1,FIND("|",A2,FIND("|",A2)+1)-FIND("|",A2)-1),"")
- 顶级列(B2单元格):
- 选中包含原列和辅助列的整个区域,点击「数据」→「筛选」,之后你可以先筛选顶级列的内容,再在筛选结果里筛选二级列,以此类推,实现分步的层级筛选效果。
备注:内容来源于stack exchange,提问作者JoeOD




