首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Excel组按产品名称进行匹配

Excel组按产品名称进行匹配
EN

Stack Overflow用户
提问于 2019-12-23 19:33:18
回答 1查看 127关注 0票数 0

我有一个excel电子表格的产品数据,我需要重新组织和分组的产品名称。产品名称的示例如下所示:

Bee 22"x36" Table Runner, Ecru

是否有一个公式,可以找到和分组所有其他产品的同名?

例如,我需要公式也包括

Bee 22"x48" Table Runner, White

在分组结果中。这是同一个产品,只是颜色和尺寸不同而已。我想我需要使用excel通配符,但这就是我所拥有的。

产品的其他示例:

Carillon吊坠大象牙

Carillon吊坠中象牙

Carillon挂件小象牙

羊绒毛绒枕头霜

羊绒毛绒浅灰色

聚焦特大床

焦点床头柜

聚焦大床

聚焦餐具柜

戈登萨餐桌长方形黑灰

戈登萨餐桌长方形核桃

戈登萨餐厅圆桌黑灰

高盛大型公司

高盛小雕像

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-25 00:12:07

我假设给定字符串的结构类似于:<manufacturer> <dimensions> <product>, <colour>

换句话说,在字符串Bee 22"x36" Table Runner, Ecru

  • <manufacturer> = Bee
  • <dimensions> = 22"x36"
  • <product> = Table Runner
  • <colour> = Ecru

我还假设,当您说要“按产品名称分组”时,您希望按<product>分组(即<dimensions><colour>之间的文本)。

最后,我假设最好先提取<product>。此后,您可以根据需要对行进行排序/重新组织,因为您没有详细描述您想要达到的最终结果。

使用函数和辅助列

虽然MATCH对诸如*?这样的通配符提供了有限的支持,但我没有使用它。如果单元格A2中有给定的字符串,请尝试以下操作:

细胞内的=INDEX(SEARCH({"0 ","1 ","2 ","3 ","4 ","5 ","6 ","7 ","8 ","9 "},SUBSTITUTE(A2,"""","")),MATCH(TRUE,ISNUMBER(SEARCH({"0 ","1 ","2 ","3 ","4 ","5 ","6 ","7 ","8 ","9 "},SUBSTITUTE(A2,"""",""))),0))

  • in

  • ,粘贴:=SEARCH(" ",MID(A2,1,9999),B2)+1

  • in cell C2,粘贴:=SEARCH(" ",MID(A2,1,9999),B2)+1

  • in cell D2,粘贴:=SEARCH(",",A2)

  • in cell E2=MID(A2,C2,D2-C2)

这将给出单元格E2中提取的E2

使用VBA和正则表达式的

您可以尝试使用VBA (它允许您使用正则表达式进行更复杂/灵活的字符串匹配),而不是上述方法。

打开VB编辑器(下面是新插入的模块中的F11)

  • Insert + Module

  • Paste代码)。

代码:

代码语言:javascript
复制
Option Explicit

Public Function ExtractProduct(ByVal someText As String) As Variant

    Const PRODUCT_PATTERN As String = "\d+["" ]?x ?\d+""? (.+?),"

    Dim regExp As Object
    Set regExp = CreateObject("VBScript.RegExp")
    regExp.Pattern = PRODUCT_PATTERN

    Dim matchesFound As Object
    Set matchesFound = regExp.Execute(someText)

    If matchesFound.Count > 0 Then
        If matchesFound(0).SubMatches.Count > 0 Then
            ExtractProduct = matchesFound(0).SubMatches(0)
        Else
            ExtractProduct = CVErr(xlErrNA)
        End If
    Else
        ExtractProduct = CVErr(xlErrNA)
    End If
End Function

然后,您应该能够从工作表中直接调用B2) (例如,假设单元格A2包含一些输入,在单元格

  • 中输入=ExtractProduct(A2) )。

不幸的是,Excel中内置的工作表函数目前似乎不支持正则表达式(与Google相比)。所以,这不可能仅仅通过一个简单的公式来实现--或者至少这是我的理解。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59460435

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档