如何在Excel中从设备多标签匹配最高分值标签并返回名称
解决方法:从多标签中匹配最高分值标签
针对你处理MS Defender导出CSV、匹配标签分值并返回最高分值标签的需求,提供两种可行方案:
方案一:Excel预处理CSV(适合习惯用Excel操作的场景)
1. 拆分多标签列
CustomDeviceTag列的格式为["Backup service", "Virtual Machine", "SQL Server"],先把标签拆成独立单元格:
- 选中该列,点击「数据」→「分列」:
- 第一步选「分隔符号」,下一步勾选「其他」,输入双引号
",完成后有效标签会出现在偶数列(如B、D、F列),把这些列的内容复制到连续的新列中(比如C、D、E列)。
- 第一步选「分隔符号」,下一步勾选「其他」,输入双引号
2. 用VLOOKUP匹配标签分值
假设Table C的标签在G列、分值在H列,在每个标签列旁添加分值匹配:
- 比如在C2的右侧(C3)输入:
=IFERROR(VLOOKUP(C2,$G:$H,2,FALSE),0),下拉填充到所有标签对应的行。 - 解释:
IFERROR处理不存在的标签(返回0分),VLOOKUP精准匹配Table C的分值。
3. 提取最高分值对应的标签
在HighestScoreTag列(比如F2)输入公式:
=INDEX(C2:E2,MATCH(MAX(C3:E3),C3:E3,0))
- 逻辑:
MAX(C3:E3)获取当前设备的最高分值,MATCH找到该分值在分值列的位置,INDEX根据位置返回对应的标签。 - 注意:若多个标签分值相同,会返回第一个出现的标签。
方案二:PowerBI内直接处理(推荐,适配后续数据分析)
如果最终要导入PowerBI,直接在PowerBI中处理更高效,无需提前修改CSV:
1. 导入数据
导入MS Defender的CSV(命名为Table A)和标签分值表(命名为Table C)到PowerBI。
2. 拆分多标签为单独行
进入Power Query编辑器,选中Table A的CustomDeviceTag列:
- 两次执行「替换值」:分别把
[和]替换为空。 - 点击「拆分列」→「按分隔符」,选择「自定义」输入
", "(逗号+空格),然后选拆分为行(这一步会让每个设备对应多行,每行一个标签)。 - 再次执行「替换值」,去掉标签前后的双引号
",得到干净的标签列。
3. 关联标签分值
点击「合并查询」→「合并为新查询」:
- 选择
Table A(拆分后)和Table C,匹配条件为「标签列」等于Table C的标签列,合并后展开分值列。
4. 分组提取最高分值标签
回到数据视图,点击「转换」→「分组依据」:
- 分组依据选择你的设备唯一标识列(比如
DeviceID)。 - 添加两个聚合项:
- 第一项:操作选「最大值」,列选「分值列」,命名为
最高分值。 - 第二项:操作选「所有行」,命名为
详细数据。
- 第一项:操作选「最大值」,列选「分值列」,命名为
- 添加自定义列,输入公式:
=Table.SelectRows([详细数据], each [分值列] = [最高分值])[标签列]{0}
- 把该自定义列重命名为
HighestScoreTag,最后删除详细数据和最高分值列即可。
内容的提问来源于stack exchange,提问作者Tom
相关产品推荐
相关产品推荐

