问题来源
前天和昨天讲的TEXT函数的用法,都是通过变换格式代码,即TEXT函数的第二个参数,来实现定义不同的格式。
(语法:TEXT(value, format_text))
有不少朋友问韩老师,那格式代码与[设置单元格格式]中的[自定义]格式代码,是那么的相像,是不是所有的[自定义]格式中的代码都能应用于TEXT函数中?
不是的,有少部分代码仅适用于自定义格式,比如TEXT函数无法实现以某种颜色显示数值的效果。
另:设置单元格格式与TEXT函数还有以下区别:
① 设置单元格的格式,仅仅是数字显示外观的改变,其实质仍然是数值本身,不影响进一步的汇总计算,即得到的是显示的效果。
② 使用TEXT函数可以将数值转换为带格式的文本,其实质已经是文本,不再具有数值的特性,即得到的是实际的效果。
今天,韩老师给大家讲一讲TEXT函数按区段代码返回格式文本。
操作提示默认条件区段
四个条件区段:
TEXT函数的格式代码默认分为4个条件区段,各区段之间用半角分号间隔。
默认情况下,这四个区段的定义为:
[>0];[<0];[=0];[文本]
【举例1】按区段条件判断,然后返回相应结果:
公式:=TEXT(A2,"0.00;-0;0;文本")的含义是:
A2单元格的值,按照四种情况返回结果:
>0,保留两位小数;
<0,只保留整数;
=0,返回0值;
文本,返回“文本”二字。
【举例2】按区段条件,强制返回相应结果:
公式:=TEXT(A8,"1!0!0;5!0;0;文本")的含义是:
A8单元格的值,按照四种情况返回结果:
>0,返回100;
<0,返回50;
=0,返回0值;
文本,返回“文本”二字。
公式中使用的感叹号(英文半角)是转义字符,强制其后的第一个字符不具备代码的含义,而仅仅是数字。比如:1!0!0,将两个0强制成数字0,而不是数字格式代码0。
在实际应用中,可以使用部分条件区段。
三个条件区段:
三个区段为:
[>0];[<0];[=0]
【举例3】
公式:=TEXT(A15,"盈利;亏损;平衡")的含义是:
A15单元格的值,按照三种情况返回结果:
>0,返回“盈利”;
<0,返回“亏损”;
=0,返回“平衡”;
两个条件区段:
两个区段的为:
[>0];[<0]
【举例4】
公式:=TEXT(A22,"盈利;亏损")的含义是:
A22单元格的值,按照两种情况返回结果:
>0,返回“盈利”;
<0,返回“亏损”;
一个区段的,就不讲了,昨天前天的两篇文章,都算是一个区段的。
自定义条件区段
TEXT函数除了可以使用默认区段以外,还可以自定义条件区段。
四个自定义条件区段:
四个区段的定义为:
[条件1];[条件2];[不满足条件的其他部分];[文本]
【举例5】
公式:=TEXT(A38,"[>=85]优秀;[>=60]合格;不合格;无成绩")的含义是:
A38单元格的值,按照自定义的四种情况返回结果:
>=85,返回“优秀”;
>=60,返回“合格”;
不满足以上条件的数值,返回“不合格”;
非数值,返回“文本”二字。
三个自定义条件区段:
三个区段的定义为:
[条件1];[条件2];[不满足条件的其他部分]
【举例6】
公式:=TEXT(A46,"[>=85]优秀;[>=60]合格;不合格")的含义是:
A46单元格的值,按照自定义的四种情况返回结果:
>=85,返回“优秀”;
>=60,返回“合格”;
不满足以上条件,返回“不合格”;
两个自定义条件区段:
两个区段的定义为:
[条件];[不满足条件的其他部分]
【举例7】
公式:=TEXT(A54,"[>=60]合格;不合格")的含义是:
A54单元格的值,按照自定义的四种情况返回结果:
>=60,返回“合格”;
不满足以上条件,返回“不合格”;
巧用TEXT嵌套自定义多条件区段
以上举例中,我们可以看到,成绩只能判断到“优秀、合格、不合格”级别,如果再多级别,一个TEXT就解决不了了。TEXT函数也可以嵌套解决这个问题:
【举例8】
要求:
90分及以上,返回“优秀”;
70分及以上,返回“良好”;
60分及以上,返回“合格”;
60分以下,返回“不合格”。
结果如下:
公式:TEXT(TEXT(A62-60,"[>=30]优秀;不合格;0"),"[>=10]良好;合格"),分解来解释:
TEXT(A62-60,"[>=30]优秀;不合格;0")
对A62-60进行分段计算:
如果>=30,返回“优秀”;
如果<0,返回“不合格”;
不满足以上条件,返回成绩的整数。
如果成绩中有小数,最后一个区段可以写成0.0,或0.00.
通过这个公式,把成绩分段成了>=90,<60,60~89三个区段。
TEXT(TEXT(A62-60,"[>=30]优秀;不合格;0"),"[>=10]良好;合格")
这一部分,对60~89的成绩,减去60,然后计算:
如果>=10,返回“良好”;
否则,返回“合格”;