You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Excel单元格中提取去重的7位SKU并关联商品名称?

提取Excel中7位SKU并关联商品名称的解决方案

一、用Power Query批量处理多文件(推荐,适合大量数据)

Power Query能一次性处理多个Excel文件,自动完成提取、去重SKU并关联商品名称的操作,步骤如下:

  1. 导入所有目标文件:
    • 打开Excel,点击「数据」选项卡 → 获取数据 → 从文件 → 从文件夹
    • 选择存放Excel文件的文件夹,点击「组合 & 加载」,将所有文件的数据合并到一个查询中
  2. 提取7位SKU(处理*K后缀):
    • 在查询编辑器中,选中包含SKU的列,点击「添加列」→自定义列,输入公式:
      List.Distinct(List.Transform(Text.Split(Text.Remove([目标列列名], {"*", "K"}), " "), each if Text.Length(_)=7 and Value.Is(Value.FromText(_), type number) then _ else null))
      
      该公式会先清除内容中的*和K,按空格拆分文本,筛选出7位纯数字内容后去重
    • 将生成的列表列展开为多行,让每个SKU单独占一行
  3. 关联商品名称:
    • 保留原始商品名称列,展开SKU后,每个SKU会自动对应原行的商品名称
  4. 去重并导出:
    • 选中SKU列,点击「开始」→删除重复项,最后点击「关闭并上载」,将结果导出到Excel表

二、VBA脚本(适合自定义需求)

如果需要更灵活的处理逻辑,可编写VBA宏遍历单元格提取SKU:

Sub Extract7DigitSKU()
    Dim ws As Worksheet, newWs As Worksheet
    Dim cell As Range, skuArr As Variant, sku As String
    Dim skuDict As Object
    Set skuDict = CreateObject("Scripting.Dictionary")
    
    ' 创建新工作表存储结果
    Set newWs = ThisWorkbook.Sheets.Add
    newWs.Range("A1") = "商品名称": newWs.Range("B1") = "SKU"
    
    ' 遍历当前工作表(可修改为遍历多工作表)
    Set ws = ActiveSheet
    For Each cell In ws.UsedRange.Columns(1).Cells ' 假设商品名称在A列,SKU在右侧一列,自行调整列偏移
        If cell.Value <> "" Then
            ' 清除*和K,拆分单元格内容
            skuArr = Split(Replace(Replace(cell.Offset(0, 1).Value, "*", ""), "K", ""), " ")
            For Each sku In skuArr
                ' 筛选7位纯数字SKU
                If Len(sku) = 7 And IsNumeric(sku) Then
                    ' 去重并记录对应商品名称
                    If Not skuDict.Exists(sku) Then
                        skuDict(sku) = cell.Value
                        newWs.Cells(newWs.Rows.Count, 1).End(xlUp).Offset(1, 0) = cell.Value
                        newWs.Cells(newWs.Rows.Count, 2).End(xlUp).Offset(1, 0) = sku
                    End If
                End If
            Next sku
        End If
    Next cell
End Sub

使用说明:

  • 按Alt+F11打开VBA编辑器,插入模块后粘贴代码
  • 根据你的表格结构,调整代码中列的偏移位置(比如cell.Offset(0,1)表示SKU在名称列右侧一列)
  • 运行宏,结果会自动生成在新工作表中

三、进阶函数组合(无需工具,适合单表小数据)

用TEXTJOIN+FILTERXML提取单元格内的所有7位SKU,再配合UNIQUE去重:

  1. 提取单个单元格的7位SKU:
    在空白单元格输入公式(假设目标内容在A1):
    =TEXTJOIN(",",TRUE,FILTERXML("<t><s>"&SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,"*",""),"K","")," ","</s><s>")&"</s></t>","//s[string-length(.)=7 and number(.)=.]"))
    
    该公式会先清除*和K,按空格拆分文本,筛选出7位纯数字内容后用逗号合并
  2. 批量提取并去重:
    将公式下拉到所有行,再用UNIQUE提取所有不重复的SKU:
    =UNIQUE(TOCOL(TEXTJOIN(",",TRUE,FILTERXML("<t><s>"&SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A:A,"*",""),"K","")," ","</s><s>")&"</s></t>","//s[string-length(.)=7 and number(.)=.]")),TRUE))
    
  3. 关联商品名称:
    用XLOOKUP或INDEX+MATCH函数,将去重后的SKU对应回原商品名称

内容的提问来源于stack exchange,提问作者MMM

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 17:50:35