欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  Office

EXCEL提取字符串中不规律数字的思路及公式

程序员文章站 2022-06-26 10:59:52
字符串提取内容sdf045D2re2DD04522AS357SDF5435754SDF245SDF6624566SSTT67QD56S367563ASD0145DD...

字符串提取内容sdf045D2re2DD04522AS357SDF5435754SDF245SDF6624566SSTT67QD56S367563ASD0145DD3D01453AADD132571325712245SDFT12245

如上图,需要把字符串中的数字提取出来,并且组合成为数字组合(不缺省无效0)。

 =MID(SUM(MID("01"&A2,1+LARGE(ISNUMBER(-MID(1&A2,ROW($1:$50),1))*ROW($1:$50),ROW($1:$20)),1)*10^ROW($2:$21))%,2,100)

对于新手而言,直接拿着公式使用即可,因为公式非常复杂,对于已入门的童鞋来说,可以好好研究研究。

大体思路:把有效数字全部变成1,非数字变成0,乘以1向上的等差序列,用Large函数找到每个数字的位置,提取该数值,然后数值根据所处位乘以10的倍数,然后相加;

由于需要保留前面0,在相乘时求和时可能会直接缺省,因此方法是在每个内容前面添加一个数值,求和后再用mid从第二位开始取值。

比如(sdf045D2re2DD):0*10000+4*1000+5*100+2*10+2,无效0会被省略,可以改进成(1sdf045D2re2DD)1*100000+4*1000+5*100+2*10+2,即104522,然后用mid从第2位到后面的全部数值。

由于非值数字的large找出的位置全是0,而mid(文本,起始位,长度)起始位不能是0,会提示错误,因此全部位置加1保证有效不错误。但在原来的文本前面给他增加一个0,变成:01sdf045D2re2DD。

该公式适用于20个数字、乱序的数字提取,可以有规律的,也可以无规律的。