使用函数轻松将文本中的数字提取出来

转转大师PDF转换器

支持40多种格式转换,高效办公

如何将文本中的数字提取出来呢?一个一个的复制粘贴太麻烦也不太显示,如果文本多的话,今天小编就来给大家分享一个使用函数轻松将文本中的数字提取出来的方法。
基本思路和使用函数说明

要提取上图A2单元格文本中的数字,如果能确定第一个数字出现的位置,然后确定数字的个数,就可以用MID函数提取出来了。

本例解决方案用到的函数及目的主要如下:

1)MID和MIDB函数,从第一个数字出现位置起取数字个数那么多位,以达到把数字提取出来的目的;

2)SEARCHB函数,可以使用通配符查到第一个数字出现的位置;

3)FIND函数,可以查找到第一个数字出现的位置;

4)COUNT函数,“数”出文本中数字的个数;

5)MAX和MIN函数,提取相关数字。

2

查找第一个数字出现的位置

第一种方法:SEARCHB函数,函数基本用法如下(第三参数忽略):

=SEARCHB(待查找的文本,包含待查找文本的目标文本)

SEARCHB函数用途是在第二参数中查找第一参数出现的位置,查找是按字节的,一个汉字占两个字节,普通数字和英文占一个字节。

并且,SEARCHB函数可以使用通配符,比如“?”就代替一个单字节字符。

如下图,在B2输入:

=SEARCHB("?",A2)

结果返回7,也就是第一个单字节字符(也就是第一个数字4)出现的位置是7,因为前面有“七连第”3个汉字,占6个字节,所以“4”是第7个字节。

第二种方法:FIND函数,函数基本用法如下(第三参数忽略):

=FIND(待查找的文本,包含待查找文本的目标文本)

和SEARCHB函数类似,FIND函数查找第一参数在第二参数中出现的位置。例如:

=FIND("中","我是国人")=3,因为第一参数“中”在第二参数“我是中国人”里是第3个字符。

我们在B2输入函数并按Ctrl+Shift+Enter运行:

=MIN(FIND(ROW(1:10)-1,A2&1/17))

结果返回4,也就是说A2文本中第一个数字出现的位置是4。

下面来简单解释一下函数的用法:

ROW(1:10)返回{1;2;3;4;5;6;7;8;9;10}这样一个数组,由于我们要查找的是单个数字,所以需要再减去1,也就是:ROW(1:10)-1。ROW(1:10)-1返回{0;1;2;3;4;5;6;7;8;9},也即0~9的10个数字。

FIND(ROW(1:10)-1,A2),也就是FIND({0;1;2;3;4;5;6;7;8;9},A2)可以查找0~9在A2文本中分别出现的位置。

但是如果A2文本中没有某个数字,比如说没有7,FIND部分就会返回错误值。

为了避免这个问题,我们在A2文本后加上"0123456789",也就是A2&"0123456789",这样,FIND函数不会返回错误值,因为即使A2文本中没有某个数字,也能在A2&"0123456789"中查到。

上面的函数中实际输入的是A2&1/17,为什么这样呢,因为1/17=0.0588235294117647,这个小数中包含0~9的所有数字。

5^19也有相同作用。

FIND(ROW(1:10)-1,A2&1/17)返回:{9;21;15;16;4;5;24;23;13;6},也即0~9这10个数字分别在A2&1/17这个文本中出现的位置,我们取最小值就是第1个数字出现的位置即可,因此外层嵌套MIN函数。即:

=MIN(FIND(ROW(1:10)-1,A2&1/17))

判断A2文本中数字的个数

第一种方法:COUNT函数。COUNT函数返回结果为其参数中的数字个数。

因此,我们输入:

=COUNT(-MID(A2,ROW(1:99),1))

其中MID(A2,ROW(1:99),1)部分的意义是:

从A2文本中第1个,第2个……第99个字符开始,分别取1个字符,也就是将A2单元格按单个字符拆分,返回:

={"七";"连";"第";"4";"5";"9";"个";"兵";……;""}

我们加上一个减号,就将文本数字转化成数值,文本转化成错误值,

-MID(A2,ROW(1:99),1)返回:

{#VALUE!;#VALUE!;#VALUE!;-4;-5;-9;#VALUE!;……;#VALUE!}

然后用COUNT({#VALUE!;#VALUE!;#VALUE!;-4;-5;-9;#VALUE!;……;#VALUE!} )数出一共有3个数字,也就是A2文本中数字的个数。

第二种方法:LEN和LENB函数方法。

LEN和LENB函数都返回参数字符长度,但是LENB按单字节个数计,LEN不区分。

例如:

=LEN("中国1汽")=4

=LENB("中国1汽")=7

我们输入下面公式获得A2单元格文本中数字个数:

=2*LEN(A2)-LENB(A2)

原理:假设A2文本中的数字都是双字节,那么2*LEN(A2)=LENB(A2),但是数字实际上是单字节的,那么2*LEN(A2)比LENB(A2)大几就是有几个单字节的字符(本例中就是数字)。

4

组合上述函数,提取数字

根据最初的思路分析,将上面的数字出现位置和数字个数函数组合一下,就得到:

=MIDB(A2,SEARCHB("?",A2),2*LEN(A2)-LENB(A2))

=MID(A2,MIN(FIND(ROW(1:10)-1,A2&1/17)),2*LEN(A2)-LENB(A2))

=MID(A2,MIN(FIND(ROW(1:10)-1,A2&1/17)),COUNT(-MID(A2,ROW(1:99),1)))

=MIDB(A2,SEARCHB("?",A2),COUNT(-MID(A2,ROW(1:99),1)))

5

补充一个方法

单纯就本例数据而言,输入下面公式,然后按Ctrl+Shift+Enter也可以返回正确结果:

=MAX(IFERROR(--MID(A2,ROW(1:99),COLUMN(A:Z)),))

以上就是今天给大家分享的关于如何使用函数轻松将文本中的数字提取出来的操作方法,有需要的小伙伴们可以根据以上步骤进行操作,如果需要pdf转txt可以使用w大师pdf转换器。