这是另一个小伙伴的问题。这个数据源和之前讲的类似,但是和之前的不同,这里的数据源用abcdef分别代表网络活跃指数,网络购物指数,在线视频指数,母婴指数,出行指数,学习指数,他想把abcdef后面的数字分别提取到C到H列,模拟结果如图所示。
这个问题之前讲过类似的,可以触类旁通,给大家2分钟的时间考虑。
2
分
钟
的
分
割
线
这个问题由于每组没有用逗号分开,我们就不能用之前讲的套路,故我的步骤是这样的:
1、提取原文本中第一个逗号前的文字
2、把b c d e f替换成,b ,c ,d ,e ,f
3、用char函数生成a,b,c,d,e,f(a在Excel的编码是97,所以用96+column(a1))
4、在2中找到a,b,c,d,e,f的位置并+1
5、在2中找到a后面的逗号的位置(find(,,find())),减去a所在的位置再减1就是字符长度
6、用mid函数提取1中需要的字符
7、如果出错,把错误变成空值
根据前两个步骤,我们可以在J列写出下面的公式:
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(LEFT($B2,FIND(',',$B2)),'b',',b'),'c',',c'),'d',',d'),'e',',e'),'f',',f')
效果如下图;
然后我们就对J列处理。
第三步可以转化为CHAR(96+COLUMN(A1)
我们需要找到abcdef的位置(第四步),所以需要FIND函数:
FIND(CHAR(96+COLUMN(A1)),$J2)
然后找到a后面的逗号的位置:
FIND(',',$J2,FIND(CHAR(96+COLUMN(A1)),$J2))
这样可以用mid来提取字母后的数字:
MID($J2,FIND(CHAR(96+COLUMN(A1)),$J2)+1,FIND(',',$J2,FIND(CHAR(96+COLUMN(A1)),$J2))-FIND(CHAR(96+COLUMN(A1)),$J2)-1
故完整公式如下:
=IFERROR(MID($J2,FIND(CHAR(96+COLUMN(A1)),$J2)+1,FIND(',',$J2,FIND(CHAR(96+COLUMN(A1)),$J2))-FIND(CHAR(96+COLUMN(A1)),$J2)-1),'')
效果如下图:
注:不用辅助列也可以,公式就会变长了哦:
=IFERROR(MID(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(LEFT($B2,FIND(',',$B2)),'b',',b'),'c',',c'),'d',',d'),'e',',e'),'f',',f')
,FIND(CHAR(96+COLUMN(A1)),SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(LEFT($B2,FIND(',',$B2)),'b',',b'),'c',',c'),'d',',d'),'e',',e'),'f',',f'))+1,FIND(',',SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(LEFT($B2,FIND(',',$B2)),'b',',b'),'c',',c'),'d',',d'),'e',',e'),'f',',f'),FIND(CHAR(96+COLUMN(A1)),SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(LEFT($B2,FIND(',',$B2)),'b',',b'),'c',',c'),'d',',d'),'e',',e'),'f',',f')))-FIND(CHAR(96+COLUMN(A1)),SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(LEFT($B2,FIND(',',$B2)),'b',',b'),'c',',c'),'d',',d'),'e',',e'),'f',',f'))-1),'')
联系客服