
问题:删除两个字以上的重复字符
解:
这个应该是正则处理的问题,但是WPS测试,取不出来,那就用老函数处理
不用在意2个以上,我们直接找2个字的
这样 小米手机xxxx小米手机 的字符
小米 米手 手机 都可以识别成重复字符,然后在处理
=MID(A2,ROW(1:99),2)
{"AB";"BC";"C小";"小米";"米红";"红米";"米A";"AB";.....}
然后判断这每个的2字符,是否在后续文本里是否有出现,就知道是否重复
那就用find,根据第3参数,在当前字符的后方查找
=FIND(MID(A2,ROW($1:$99),2),A2,ROW($1:$99)+2)
{8;9;#VALUE!;14;#VALUE!;#VALUE!;15;16;17;#VALUE!;#VALUE!;....}
不用在意上面的数字是多少,只看哪个位置是数字
第1 2 4 6 7 8位置是数字,那就表示,这些位置开始的2个支付是重复字符
=IF(FIND(MID(A2,ROW($1:$99),2),A2,ROW($1:$99)+2),ROW($1:$99))
{1;2;#VALUE!;4;#VALUE!;#VALUE!;7;8;9;#VALUE!;#....}
但是这些数字只是开始位置,我们是算2个字符,那1位置是重复,就表示1 2是重复字符
=IF(FIND(MID(A2,ROW($1:$99),2),A2,ROW($1:$99)+2),ROW($1:$99))+{0,1}
{1,2;2,3;#VALUE!,#VALUE!;4,5;#VALUE!,#VALUE!;#VALUE!,#VALUE!;7,8;8,9;9,10;#VALUE!,#VALUE!....}
+{0,1}后,1就变成1 2 ,2变成2 3了 这些位置的字符是重复的,要删除的
不需要在意重复位置
这是两列多行的数值,要转成1行或一列,都行,用torow /tocol
然后原来为123456的位置号,如果在重复的位置号{1 2 2 3 7 8}里的话,就返回空,不在的话,就返回原内容
=IFERROR(IF(MATCH(ROW($1:$99),TOROW(IF(FIND(MID(A2,ROW($1:$99),2),A2,ROW($1:$99)+2),ROW($1:$99))+{0,1}),0),""),MID(A2,ROW($1:$99),1))
{"";"";"";"";"";"红";"";"";"";"";"J";"H";"K";"小";"米";"A";"B";"C";"";""....}
这样就能得到不重复的单个字符,然后就concat合并就好了
=CONCAT(IFERROR(IF(MATCH(ROW($1:$99),TOROW(IF(FIND(MID(A2,ROW($1:$99),2),A2,ROW($1:$99)+2),ROW($1:$99))+{0,1}),0),""),MID(A2,ROW($1:$99),1)))
注意,这里只认字符,不管词语意义,如 米A 也判断成重复了
另外,这是删除前面字符,保留后方字符,就用这个
就是想判断第56个字符是否重复,就判断在1-4位置是否存在
=CONCAT(IFERROR(IF(MATCH(ROW($1:$99),TOROW(IF(FIND(MID(A5,ROW($1:$99),2),MID(A5,1,ROW($1:$99)-1)),ROW($1:$99))+{0,1}),0),""),MID(A5,ROW($1:$99),1)))