成语类型判断(UNIQUE+MATCH+正则等)

职场   2024-11-04 23:09   江苏  
直接来看问题,如何通过函数方式判断成语类型,具体如下图:

下面我们讲解一下处理思路:
ABCD的标记逻辑是按首次出现的顺序标记,比如“毕恭毕敬”,“毕”这个字第二次出现也是"A"。具体几个字母由不重复汉字来决定,出现的顺序问题,我们可以借助MATCH函数定位来解决,数字转字母可以通过CHAR函数来处理。下面我们依次解决这些问题即可得到结果


那么,第一步,我们要把成语逐位拆分成四个字,具体方法较多

▍逐位提取内容

比如MID函数,COLUMN(A:D)生成{1,2,3,4},成语是四个字,也就是依次从1~4位截取,每次截取1位,最后实现逐位提取的效果。


或者使用新的正则函数,更加简单一些!这里的点表示任意非换行符的任意单个字符,从而实现逐位提取。


逐位提取的难题解决了,下面就是去除重复值,提取唯一的内容,可以使用UNIQUE函数处理,更加简单一些!

▍提取唯一值

UNIQUE函数使用需要注意一下,这里是横向提取,所以需要使用第二参数TRUE或者1,返回唯一列,也就是按列比较!


下面我们就来解决首次出现的问题,这个如果你对MATCH有点了解,因为就能想到这个完全是MATCH的活,MATCH返回首次匹配的位置!

后面MATCH函数也要使用逐位提取的内容,所以,这里使用LET函数,简化书写,现在S就代表成语的逐位的4个字!




▍返回首次位置

这里用4个汉字,在去重的的内容中查找,返回首次出现的位置,所以,返回{1,2,1,3},完全符合预期!



▍数字转字母

下一步就是如何把这些数字返回对应的字符,这个Excel有专门的函数就做CHAR函数,CHAR(65)返回“A”,从65开始逐位增加,返回对应的字母B、C、D……Z等!


所以这里,直接用65+定位结果即可!

最后一步,把内容合并起来就可以,这个可以使用CONCAT最简单,也可以使用TEXTJOIN函数!

OK!解决上面的各位问题,我们也就得到了最后完整的函数公式

▼最终函数公式
=LET(S,REGEXEXTRACT(A2,".",1),CONCAT(CHAR(64+MATCH(S,UNIQUE(S,1),))))


本次内容就分享到这里,如果对你有帮助,请"三连”支持!

Excel办公实战
分享Excel及WPS函数、技巧、VBA、PBI、JSA等办公技能。助你轻松实现办公自动化!易办公◎早下班!
 最新文章