Excel单列分号分隔值的匹配值频次分析优化方案咨询
高效可扩展的Excel问题共现频次统计方案
方案一:Power Pivot + DAX 构建动态可筛选共现矩阵
这是适配你场景的最优方案,依托Power Pivot的数据模型,支持通过切片器筛选日期、处理人等维度,彻底摆脱冗余公式:
- 将已拆分的
Query ID-Issue表导入Power Pivot(点击「数据」选项卡→「添加到数据模型」) - 在Power Pivot中创建DAX度量值:
共现频次 = VAR 当前问题 = SELECTEDVALUE('拆分表'[Issue]) VAR 关联查询ID = CALCULATETABLE(VALUES('拆分表'[Query ID]), '拆分表'[Issue] = 当前问题) RETURN CALCULATE(COUNT('拆分表'[Query ID]), FILTER(ALL('拆分表'), '拆分表'[Query ID] IN 关联查询ID && '拆分表'[Issue] <> 当前问题))
- 插入数据透视表,将
Issue字段同时拖入行和列区域,值区域选择刚创建的「共现频次」度量值 - 添加切片器(关联日期、处理人等字段),即可实现维度筛选下的动态共现统计
方案二:Power Query 生成共现对后统计
通过Power Query预先生成所有问题共现组合,再用透视表统计,逻辑直观且可追溯:
- 在拆分后的表中,用Power Query添加自定义列,生成每个Query ID对应的问题两两组合:
= List.Combinations(List.Distinct(Table.SelectRows(#"上一步骤名称", (x)=>x[Query ID]=[Query ID])[Issue]), 2)
- 展开该自定义列,拆分为「问题1」和「问题2」两列
- 为避免重复统计(如
(apples,pears)与(pears,apples)视为同一组合),添加两个自定义列排序后去重:
// 生成排序后的问题1 = if [问题1] > [问题2] then [问题2] else [问题1] // 生成排序后的问题2 = if [问题1] > [问题2] then [问题1] else [问题2]
- 删除原「问题1」「问题2」列,将新列重命名为「问题1」「问题2」,加载到Excel后插入数据透视表,行放「问题1」、列放「问题2」、值区域计数
Query ID,再添加切片器实现筛选
方案优势对比
- Power Pivot方案:无需预处理数据,动态性最强,筛选操作直接通过切片器完成,适合频繁更新或多维度分析的场景
- Power Query方案:共现组合可视化,统计逻辑透明,适合需要导出共现明细的场景
内容的提问来源于stack exchange,提问作者Henry WARD
相关产品推荐
相关产品推荐

