分享

EXCEL中的TEXT函数详解

 JT_man 2010-01-28



EXCEL 中的 TEXT 函数 
TEXT 
将数值转换为按指定数字格式表示的文本。 

语法
TEX
T(value,format_text) 

Value 为数值、计算结果为数字值的公式,或对包含数字值的单元格的引用。
Format_text 为“单元格格式”对话框中“数字”选项卡上“分类”框中的文本形式的数字格式。 

说明 

Format_text 不能包含星号 (*)。 
通过“格式”菜单调用“单元格”命令,然后在“数字”选项卡上设置单元格的格式,只会更改单元格的格式而不会影响其中的数值。使用函数 TEXT 可以将数值转换为带格式的文本,而其结果将不再作为数字参与计算。 

         A            B 
1 销售人员 销售 
2 Buchanan 2800 
3 Dodsworth 40% 
公式                                                                          说明                                            结果 
=A2&" sold "&TEXT(B2, "$0.00")&" worth of units." 将上面内容合并为一个短语 (Buchanan sold $2800.00 worth of units.) 
=A3&" sold "&TEXT(B3,"0%")&" of the total sales." 将上面内容合并为一个短语 (Dodsworth sold 40% of the total sales.)

TEXT生成的几种日期格式:(假设当前系统日期为2010年1月28日)
YYYY
=text(now(),"YYYY") (返回:2010)
dbnum1
=TEXT(NOW(),"[dbnum1]yyyy年m月d日") 中文小写日期(返回:二○一○年一月二十八日)
dbnum2
=TEXT(NOW(),"[dbnum2]yyyy年m月d日") 中文大写日期(返回:贰零壹零年壹月贰拾捌日)

日期转换
把20080808修改成2008-08-08的格式可以用以下公式:
=text("20080808","#-00-00")

把英文月份化成数字月份:
=MONTH(("Aug"&1))
=MONTH(("August"&1))

返回一个月的最后一天,就是用下一个月的第一天-1就行。
得到上一个月的最后一天:
=today()-day(now())

确定季度:
=text(roundup(month(now())/3,0),"[dbnum1]第0季度")

返回星期:(假设当前系统日期为2010年1月28日,星期四)
=weekday(now(),2)  返回:4
=text(today(),"aaaa")  返回:星期四
=text(today(),"aaa")    返回:四  (考勤表中用到)

返回最近星期天的日期
=today()-weekday(today(),2)
=today()-mod(today()-1,7)
=today()+8-weekday(today())
=today()+6-mod(today()-2,7)

两个日期相隔的星期天数:
=int((weekday(date1,2)+date2-date1)/7)


1.关于 TEXT(102,"!r0c00") 此类格式函数
TEXT(102,"!r0c00") --->"r1c02" 
前面加个indirect
indirect(TEXT(102,"!r0c00"),)---->INDIRECT("r1c02",)-->就是等于行1列2 即B1的值
故展开=INDIRECT(TEXT(1002,"!r00c00"),)--->B10的值
=INDIRECT(TEXT(1002,"!r00c0"),)--->B100的值
=INDIRECT(TEXT(102,"!r00c0"),)------->B10的值 注意前后的变化

继续扩展:
=INDIRECT(TEXT({101;102;103;201;202;203;301;302;303},"!r0c00"),)------->
=INDIRECT({"r1c01";"r1c02";"r1c03";"r2c01";"r2c02";"r2c03";"r3c01";"r3c02";"r3c03"},)这个得到一个数组

题外话:
SMALL(ROW($A$1:$C$3)*100+COLUMN($A$1:$C$3),ROW(1:9))--可得到(张贴:只是为了学习这个方法)------------------------------->{101;102;103;201;202;203;301;302;303}

2.关于此类TEXT({10;1;11;2;13;14;15;8;7;3},"[<=8]#;1")此类格式函数
先了解一下: TEXT({10;1;11;2;13;14;15;8;7;3},"[<=8]#;1")引申出结果为
{"1";"1";"1";"2";"1";"1";"1";"8";"7";"3"},意思就是说大于8的为1,小于等于8的为原来值
看 =TEXT({10;1;11;2;13;14;15;8;7;3},"[>=8]#;1")如果修改成大于等于 引申出结果为
{"10";"1";"11";"1";"13";"14";"15";"8";"1";"1"} 

继续展开
=TEXT({10;1;11;2;13;14;15;8;7;3},"[=8]#;1")--->={"1";"1";"1";"1";"1";"1";"1";"8";"1";"1"}
=TEXT({10;1;11;2;13;14;15;8;7;3},"[<>8]#;1")--->={"10";"1";"11";"2";"13";"14";"15";"1";"7";"3"}
=TEXT({10;1;11;2;13;14;15;8;7;3},"[<>""]#;1")-->={"10";"1";"11";"2";"13";"14";"15";"8";"7";"3"}


题外话:(相关的例子)
"[<="&LEN($A$6)&"]#;1"--->如果LEN($A$6) 等于8 那么 就可以得到 "[<=8]#;1"
ROW($1:$10)-1----->就可以得到 {0;1;2;3;4;5;6;7;8;9}这个数组
10-ROW($1:$10)--->就可以得到 {9;8;7;6;5;4;3;2;1;0}这个数组

 

B

C

D

E

2

示例:查找字符串中第一个字母"a"的位置,如果没有找到则返回0。  

3

字符串

位置

IF公式

Text公式

4

afair

1

=IF(FIND("a",B4&"a")>LEN(B4),0,FIND("a",B4&"a")) =TEXT(FIND("a",B4&"a"),"[>"&LEN(B4)&"]!0")

5

beat

3

=IF(FIND("a",B5&"a")>LEN(B5),0,FIND("a",B5&"a")) =TEXT(FIND("a",B5&"a"),"[>"&LEN(B5)&"]!0")

6

Excel

0

=IF(FIND("a",B6&"a")>LEN(B6),0,FIND("a",B6&"a")) =TEXT(FIND("a",B6&"a"),"[>"&LEN(B6)&"]!0")
 
 
 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多