如何拆分Excel多值单元格生成CVE与单设备对应行?
拆分MDE导出Excel中的CVE-多设备行数据
方法1:使用Power Query(推荐,无代码)
- 选中数据区域,点击「数据」选项卡 → 「从表格/区域」(Excel会自动将数据转为表格)
- 在Power Query编辑器中,找到存储受影响设备的列(比如列名为「受影响设备」),点击列标题旁的拆分按钮 → 「按分隔符拆分列」→ 选择设备列表的分隔符(比如逗号、分号,根据你的表格实际情况选),选择「拆分为行」
- 确认拆分后,点击「关闭并上载」,拆分后的新表格会自动生成在新工作表中,所有其他列的内容会自动对应到每一行设备数据
方法2:使用公式组合(适合小数据量)
假设你的表格:
- A列是CVE编号,B列是受影响设备(用逗号分隔),C-Z列是其他需要保留的字段
- 插入辅助列(比如AA列),在AA2单元格输入公式:
=LEN(B2)-LEN(SUBSTITUTE(B2,",",""))+1,下拉填充,计算每行的设备数量 - 插入辅助列(AB列),在AB2单元格输入公式:
=SUM(AA$2:AA2)-AA2+1,下拉填充,计算每行的起始行号 - 在新工作表的A2单元格输入公式:
=INDEX(原表!A:A,MAX(IF(AB$2:AB$1000<=ROW()-1,ROW(AB$2:AB$1000),0))),按Ctrl+Shift+Enter(Excel 365直接回车),下拉填充获取CVE编号 - 新工作表的B2单元格输入公式:
=TEXTSPLIT(INDEX(原表!B:B,MATCH(A2,原表!A:A,0)),",")(ROW()-INDEX(AB:AB,MATCH(A2,原表!A:A,0))+1),下拉填充获取单台设备 - 其他列直接用
=INDEX(原表!C:C,MATCH(A2,原表!A:A,0))这类公式匹配,下拉填充即可
方法3:VBA脚本(适合大数据量批量处理)
按Alt+F11打开VBA编辑器,插入模块,粘贴以下代码:
Sub SplitCVEDevices() Dim wsSource As Worksheet, wsTarget As Worksheet Dim lastRow As Long, targetRow As Long Dim deviceArr As Variant, i As Integer Set wsSource = ThisWorkbook.Sheets("原表") '替换成你的源工作表名称 Set wsTarget = ThisWorkbook.Sheets.Add wsTarget.Name = "拆分结果" '复制表头 wsSource.Rows(1).Copy wsTarget.Rows(1) targetRow = 2 lastRow = wsSource.Cells(Rows.Count, "B").End(xlUp).Row '假设设备列是B列,按需修改 For i = 2 To lastRow deviceArr = Split(wsSource.Cells(i, "B").Value, ",") '按逗号拆分设备,按需修改分隔符 For Each device In deviceArr wsSource.Rows(i).Copy wsTarget.Rows(targetRow) wsTarget.Cells(targetRow, "B").Value = Trim(device) '去除设备名称前后空格 targetRow = targetRow + 1 Next device Next i MsgBox "拆分完成!" End Sub
修改代码中的「原表」和设备列序号(比如"B"),按F5运行脚本,拆分结果会自动生成在新工作表中
内容的提问来源于stack exchange,提问作者Kivas
相关产品推荐
相关产品推荐

