购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

第5章
提取字符函数

本章涉及3个函数,语法内容如下。

从左侧提取:

从右侧提取:

从中间提取:

5.1 LEFT、RIGHT、MID函数

LEFT、RIGHT、MID三个函数从英文含义上讲依次为左、右、中,也就是分别从左边、右边、中间提取字符。那么,提取几个字符呢?语法中的num_chars为提取的字符长度,下面使用一个简单的示例来演示。

C10单元格为文本字符串“ExcelHome”,在D10单元格提取C10单元格的左侧5个字符,于是便有公式“=LEFT(C10,5)”,表示的是C10单元格左侧的5个字符。

同理,E10单元格的公式“=RIGHT(C10,4)”,表示的是C10单元格右侧的4个字符。

对于F10单元格,从MID的语法中,看到它的第二参数是start_num,翻译为开始的数字。也就是说,我们要从中间提取,就要确定一个起始点。就像站队时,老师说:“第3~8位的6位同学出来。”于是便有公式“=MID(C10,3,6)”,如图5-1所示。

提取字符的对象,不仅可以是纯文字字符,还可以是数字,如图5-1下半部分所示,C12单元格为数字“1234567890”,同样可以使用函数将左、右、中的数字提取出来。

图5-1 提取字符示例

下面熟悉一下这三个函数,这里先不考虑如何“偷懒”,就单纯地使用LEFT、RIGHT、MID函数在阴影部分区域提取出相应的数字,结果如图5-2所示。

图5-2 提取字符练习

下面任选几个单元格。

在D17单元格中输入公式:

从C17单元格中提取左侧2个字符长度,结果为12。

在F18单元格中输入公式:

从C18单元格中提取右侧5个字符长度,结果为24691。

在E19单元格中输入公式:

从C19单元格的第5位字符开始,提取2个字符长度,结果为50。

使用LEFT、RIGHT、MID函数提取的数字都是文本型数字,然而文本型数字通常没有办法直接用作数字计算。例如,在上面的练习中,LEFT、RIGHT、MID三个函数将不同部分的数字都提取了出来,如果用这些数字进行计算,写下公式“=SUM(D17:D19)”,得到的结果为0。

要想把文本型数字转化为数值型数字,只需做一次四则混合运算,如“*1”“+0”“/1”“-0”等。目前比较流行的方法为“减负”,即“——”,把两个减号连写,如“=——LEFT(C17,2)”。

在论坛中,有些帖子讨论过这些用法的差异,有的说用“——”运算效率最高,但经过实际操作发现,上述几个运算符的效率几乎相同,它们最大的区别在于是否“帅气”,同一个按键连按两下即可完成,如果用“*1”的方式,首先要结合【Shift】键并按数字8,然后再找到数字1,相比而言,后者要复杂一些。

5.2 案例:提取身份证中的生日、性别

5.1 节介绍了LEFT、RIGHT、MID三个函数,本节将介绍如何应用它们。

身份证号码中包含了籍贯、生日、性别等信息,如果想通过身份证号码得到一个人的生日信息,该如何操作呢?

身份证号中的第7~10位表示出生年份,第11~12位表示出生月份,第13~14位表示出生日期。身份证号的第17位表示性别,奇数代表男性,偶数代表女性。了解了以上信息,就可以使用MID函数将某人出生的年、月、日、性别等信息提取出来。例如,提取出生年信息的公式为“=MID(D23,7,4)”,如图5-3所示。

图5-3 提取身份证信息

再如,提取性别信息,我们只要提取身份证号的第17位即可得到标识性别的数字,函数公式为“=MID(D23,17,1)”。至于怎样将数字变为男、女,在第17章中讲IF函数时具体讲解,此处不再赘述。

公式“=MID(D23,17,1)”提取性别,用的是从左向右数,第17位的方式。如果从右向左数,原第17位数字就成为倒数第2位。那么问题来了,从右向左数时,倒数第n位的数字要怎样提取?没有特定的函数是提取倒数的,下面看一下提取字符的第二种方法。

首先厘清思路。如果从右边来看,可以理解为先把右边两位数字提取出来,再在两位数字中提取左边的那1位,最终提取的数字是否为需要的倒数第2位数字呢?下面来验证一下。

在E23单元格中输入公式“=RIGHT(D23,2)”,得到右侧两个字符3和6,如图5-4所示。

图5-4 提取右侧两个字符

继续在E23单元格中修改公式,将公式改为“=LEFT(RIGHT(D23,2),1)”,得到倒数第2位字符3,如图5-5所示。

图5-5 提取倒数第2位字符

由上述操作可以得出,如果想要提取倒数第n位字符,那就要把右侧n位字符全部提取出来,然后再提取这几位字符中最左边的字符即可。

有人会说,提取性别数字的过程,明明可以只用一个MID函数搞定,为什么要搞得这么复杂呢?

这里讲第二种方法是给大家提供一种新的Excel函数使用思路,多分析新的思路可以解决函数中的很多问题。

5.3 案例:印有数位线的数码字填写

在日常工作与生活中,有没有遇到其他的需要“倒数”的情况呢?下面我们就用“倒数”的方法来解决一个实际问题。

如图5-6所示,在财务工作中将数字金额填入各个单元格中。

图5-6 填写数码字示例

我们要如何处理这个问题呢?首先还是厘清思路。

观察图5-6,每一个数字对应一个单元格,那么就从左到右依次把数字放到每一个单元格中。

怎样解决小数点的问题呢?小数点在中间,如何确定小数点的位置?不是每一个数字都到“分”位,A7和A8缺少一个“0分”,这种情况怎么处理?

我们换个角度考虑,每个数字最多到“分”位,即小数点后两位。将每个数字扩大100倍,便能得到没有小数点的整数。如图5-7所示,在N2单元格中输入公式“=A2*100”,将每个数字扩大100倍,并将N2单元格中的公式向下复制到N8单元格。

图5-7 扩大100倍

操作后,N列的数字与前面填写的部分就能一一对应了。小数点的问题解决后,再解决将数字放到每个单元格中的问题。

以第6行数据为例,N6单元格为数字12345678,M6单元格放12345678的倒数第1位,L6放倒数第2位,……,F6放倒数第8位。

通过第4章的学习可以了解到,COLUMN的函数公式从左向右复制始终是逐渐变大的,那么怎样使它逐渐减小呢?用一个固定的数字去减COLUMN,是不是就能逐渐减小?下面通过操作来进行验证。

对于M列,提取的是各个数字的倒数第1位。在M列输入“COLUMN()”公式,得到的结果是什么?M列位于第13列,所以得到的结果是13。那么几减去13等于我们需要的数字1呢?答案是14。由此得出公式“=14-COLUMN()”。如图5-8所示,在M9单元格中输入此公式,将其向左复制到B9单元格。

图5-8 降序数列

降序的数列问题解决了,下面就是倒数问题了,这就要用到LEFT函数和RIGHT函数的组合。

在B2单元格中输入公式“=LEFT(RIGHT($N2,14-COLUMN()),1)”,特别注意引用N列数据时“图钉”的位置。然后向右、向下复制,于是B2:M8单元格区域的结果如图5-9所示。

图5-9 填写数位字公式1

操作后得到了很多1,我们选择任意一个结果为1的单元格分析一下原因。例如,D4单元格公式为“=LEFT(RIGHT($N4,14-COLUMN()),1)”,下面分步检查公式。

(1)N4的数字为12345,这个没问题,小数点完美地被处理了。

(2)14-COLUMN(),当前是D列,所以这里就是14-4=10,也没问题。

(3)RIGHT(12345,10),结果是12345,只有5位数,并没有要提取的10位。

(4)LEFT("12345",1),结果是1,12345最左面的字符就是1,也没有问题。

分析之后发现,问题就在于RIGHT函数部分,要提取10位,但是整个字符串只有5位,所以只好把这5位全部提取了。这就需要用空格进行补位。

现在调整公式细节,将其改为“=LEFT(RIGHT(""&$N2,14-COLUMN()),1)”,结果完全正确,如图5-10所示。

图5-10 填写数位字公式2

我们再以D4单元格的公式进行分析,""&$N4得到的结果是12345,在12345的前面有一个空格,之后RIGHT函数提取该字符串右侧的10位,结果仍然是12345,最后LEFT函数提取该字符串的左侧1位,即结果为"",是一个看不见的空格。

最后将表格完善一下,删除N列的辅助列,并在空格后面添加人民币标识“¥”,最终公式为:

这样就可以得到图5-6展示的效果了。 mi64LMCcklzv/WcFekNwlrU/R0as6a78upXO2vaan8UuYWbiLDG43k4lx80FuBPL

点击中间区域
呼出菜单
上一章
目录
下一章
×