如果说RIGHT、LEFT、MID、FIND和SUBSTITUTE等函数是文本的变形专家——只能对数据进行外观上的改变,那么TEXT函数则称得上文本变形“大咖”,它可以根据数据的特点,按照我们预设的格式,灵活改造字符串的式样。
TEXT函数将数值转换为按指定数字格式表示的文本。它可通过格式代码对数字应用格式,进而更改数字的显示方式,其表达式是:TEXT(value,format_text),如图2-19所示为函数的图解。其中第二个参数format_text为核心,它是一个格式代码,大多数“单元格格式”中“自定义”的格式代码可以直接设置为TEXT函数的第二个参数,如图2-20所示。
图2-19 TEXT函数参数语法解释
图2-20 自定义格式代码可作为TEXT函数的第二参数
提示 TEXT返回的是文本形式的数据。如果需要参与计算,必须将文本转换为数值。文本类型的数值遇到四则运算则会自动转换为数值类型,但在函数引用中却不会参与计算,这一点需要大家留意。
接下来通过几个案例深入学习TEXT函数的应用。
案例1: 随意更改日期格式。
日期其实是一种特殊的数值,默认情况下,1900年1月1日的序列号是1,往后每天累计加1。TEXT函数可以把日期所代表的真正数字转换成所需的日期格式的文本。
如图2-21所示,通过案例学习TEXT函数如何更改日期。
图2-21 TEXT函数对日期的改造方式
首先,数值是可以和日期一一对应起来的,42825其实就是1900年1月1日开始的第42825天,使用公式=TEXT(A2,"yyyy/m/d")将其转换为常规的日期格式,公式中的yyyy指的就是4位年份(year的首字母),m指的是月份(month的首字母),d指的是天(day的首字母)。通过图2-21中的案例对比可知,通过改变占位符y、m的数量,可以改变年份、月份或者天的效果。
到底应该使用几个占位符呢?我们接着学习下一个案例。
案例2: 灵活的数字占位符的应用。
什么是占位符?形象地说,占位符就是占据字符位置的符号,常用的数字占位符有0、#、?等,案例1中出现的y、m、d是日期占位符的种类。毫不夸张地说,只有理解了各种占位符的作用,才能真正选好TEXT函数的格式代码。
如图2-22所示,是TEXT函数对数字进行改造的基本类型,下面对每一个公式进行解读。
图2-22 使用占位符改造数字的案例
①公式=TEXT(13.14,"0"):将13.14四舍五入到个位。
②公式=TEXT(13.14,"0.0"):四舍五入保留一位小数。
其中的0是占位符,有多少个0,第一个参数的数值就至少显示多少位,如果第一个参数位数少于占位符0的个数,则用0补足。如果在格式代码中使用小数点“.”,则可以代替ROUND函数进行数值的四舍五入计算。
③公式=TEXT(13.14,"0.000"):因为实际的数值中,小数点之后的位数小于占位符个数,所以用0补足,因此结果为13.140。
④公式=TEXT(13.14,"00000"):如果整数部分位数不足,则0会补在数字前面,否则会改变数值的大小。
⑤公式=TEXT(13.14,"#####"):#占位符的含义是指显示有意义的0,而不显示无意义的0,小数点后数值位数若大于#的个数,则按#的位数进行四舍五入。
⑥公式=TEXT(2562184,"0,0"):“0,0”中的逗号相当于千分位符,会将数值按照每三位进行划分。
案例3: 格式代码的4个区段的应用。
TEXT函数的第二个参数(也就是格式代码)共有4个区段,每个区段之间用英文状态下的分号隔开,它们分别作用于不同类型的数据,如图2-23所示。也就是说,如果参数1为正数,则参数2应该写在区段1中,依此类推。
图2-23 TEXT第二参数的4个区段
如图2-24所示,我们对参数2的第一区段设置四舍五入为整数,第二区段设置“0.0”,第三区段为“00”,第四区段写上“文本”,然后将函数=TEXT(A2,"0;0.0;00;文本")向下复制,会发现针对A列数值的不同,函数作用的结果也不同,这在某种程度上就是IF函数嵌套的作用。
图2-24 TEXT函数第二参数各区段应用案例
提示 案例1、案例2没有对TEXT函数的第二个参数进行分段,也就是只有一个区段,那么该代码将作用于所有的数字上。另外,如果只有两个区段,则默认就是区段1和区段2。同理,如果有三个区段,则默认为区段1、区段2和区段3。
这里解释图2-24中=TEXT(A2,"0;0.0;00;文本")公式的意义。
A2单元格中的数值18.4为整数,所以参数2中区段1对其起作用,区段1为占位符0,代表四舍五入到个位,因此结果为18;A3单元格中的数值-20为负数,所以参数2中区段2对其起作用,区段2为占位符0.0,代表转化为正的四舍五入到一位小数,因此结果为20.0。依此类推,区段3对0值起作用,区段4对文本起作用。
案例4: 自定义格式代码。
真正的“大咖”是可以应对任何情况的,正所谓“万变不离其宗”。如前面介绍TEXT函数的第二参数的4个区段,分别对应正数、负数、零和文本,这样还是有局限性。事实上,TEXT函数允许自定义各区段可适用的条件,这就使得能选择的条件不局限于正数、负数、零和文本这4个固定的条件。
如图2-25所示,可以按照这样的方式设置每个区段的自定义条件,其中条件需要用方括号括起来,条件判断的顺序是先左后右。
图2-25 自定义TEXT函数的4个区段
通过自定义TEXT函数各区段的条件,事实上,它已经能完成IF函数的判断功能,而且只通过一个函数就可实现IF的嵌套功能,写出的函数比较简单易懂,所以在数组函数中经常使用TEXT函数代替IF函数。
比如,我们希望判定成绩的等级,假定成绩≥85判定为优,成绩≥75判定为良,其他情况判定为中。如图2-26所示,在B2单元格中输入公式=TEXT(A2,"[>=85]优;[>=75]良;中;"),然后将公式向下复制,即可求出各成绩的等级。如果使用IF函数,则需要两层嵌套,公式=IF(A2>=85,"优",IF(A2>=75,"良","中"))。
图2-26 视同TEXT函数判断成绩等级
提示 TEXT设定的条件不能超过4个区段,且最多只能设置两个条件,区段3不能设置条件,如果判断的条件过多,就无法使用TEXT函数,必须使用IF函数的多层嵌套。
本节讲解了这么多文本变形函数,我们来回顾一下:提取、替换、定位和变形,究其这些函数的用法,我们能归纳出文本类函数使用的第一性原理: 准确找到要进行改造的字符串的位置。
这几个函数是这样搭配的:定位是核心,使用FIND(或SEARCH)函数可以精准地确定某个字符或文本字符串在另一个文本字符串中的位置,然后可以执行两个操作:
①使用MID、LEFT或RIGHT函数截取定位到的文本并返回。
②使用SUBSTITUTE或REPLACE函数替换文本。