用SUBSTITUTE替换法为产品找到最匹配的类别
作者:ITFANS来源:部落窝教育发布时间:2024-11-12 11:38:40点击:527
编按:
产品名称同时包含了分类和颜色等特性描述,怎么从中得到其分类呢?由于产品分类或类别的字符组成不固定、字符数不固定、位置不固定,不适合用提取的方法。有人用SEARCH进行查找匹配,但笔者推荐用SUBSTITUTE替换法。
有伙伴常需要为品名分类。比如下表,A列是品名,D列是已有的分类,现在需要在B列给出各品名的分类。如果品名中不包含任何现有分类,则归类为“other”。
很明显,品名中已经包含了分类,譬如A2的分类就应该是D18,现在要做的就是怎么把它提取出来。由于产品分类或者类别的字符组成不固定、字符数不固定、位置不固定,不适合用提取的方法。
很多伙伴的第一反应就是查找,用SEARCH函数在品名中查找D列的分类。如果品名中包含现有分类,会得到一个数字,否则就是错误值。需要的分类就是这些数字对应的分类中的一个。
这种思路最终需要对D列的分类进行升序排列才能准确适配到对应的分类。
低版本用户可以先对D列进行升序排列,然后用LOOKUP查找:
=IFERROR(LOOKUP(99,SEARCH($D$2:$D$67,A2),$D$2:$D$67),"other")
为何LOOKUP查找的是99?涉及的原理请看《一文讲透LOOKUP二分法原理》。
高版本(Excel 2021及以上)用户可以先使用SORT函数排序,再取最后一个SEARCH值对应的分类:
=IFERROR(TAKE(FILTER(SORT($D$2:$D$67),ISNUMBER(SEARCH(SORT($D$2:$D$67),A2))),-1),"other")
笔者推荐伙伴换一个思路来做:将各分类作为品名中的旧字符替换为空,若用某个分类替换后品名字符数最少,则它就是需要的分类。该思路适合所有版本,不需要排序。
在B2中输入如下公式即可得到分类:
=INDEX($D$2:$D$67,MATCH(MIN(LEN(SUBSTITUTE(A2,$D$2:$D$67,""))),LEN(SUBSTITUTE(A2,$D$2:$D$67,"")),0),)
再添加一个IF判断:
如果替换后最小字符数等于未替换时的字符数,则说明分类为“other”。
本文配套的练习课件请添加客服微信buluowojiaoyu索取。
做Excel高手,快速提升工作效率,部落窝教育Excel精品好课任你选择!
扫下方二维码关注公众号,可随时随地学习Excel:
相关推荐:
版权申明:
本文作者ITFANS;部落窝教育享有稿件专有使用权。若需转载请联系部落窝教育。