excel中文大写数字转为阿拉伯数字(EXCEL中文小写数字怎么转化成阿拉伯数字呢)
把阿拉伯数字转化成中文小写数字,我们都知道,通过单元格格式设置就可以实现,如下图:
但是上面的转化有时并不能满足我们的需求,比如,我们需要把13转化成十三,而不是一十三,这时我们该怎么办呢?
下面我们先学习下把阿拉伯数字转化成中文数字的一个函数。
一、NUMBERSTRING
功能:
EXCEL中隐藏了一个将小写数字转换成中文大写数字的函数:NUMBERSTRING,此函数可以方便的实现小写数字到中文大写数字的转化,而且有三个参数可以选择,以展现三种不同的大写方式。此函数仅支持正整数,不支持有小数的数字。
语法:
=NUMBERSTRING(VALUE,TYPE)
value:要转化的数字
type:返回结果的类型,有三种:1,2,3
示例:
=NumberString(1234567890,1) 返回结果:一十二亿三千四百五十六万七千八百九十
=NumberString(1234567890,2) 返回结果:壹拾贰亿叁仟肆佰伍拾陆万柒仟捌佰玖拾
=NumberString(1234567890,3) 返回结果:一二三四五六七八九〇
二:[dbnum]的几种格式
[dbnum1]是将阿拉伯数字转换为汉字,如:123转换为一二三
[dbbun2]是转换成大写汉字,如:123转换为壹贰叁
[dbnum3]是转换为全角数字,如:123转换为 123
d代表日期之中的日,m日期中的月,y日期中的年,h日期中的小时,m日期中的分,s是日期中的秒,e也表示年,b表示佛历年。
=TEXT(10,"[DBnum1]")
结果为“一十”,
=TEXT(10,"[DBnum1]d")
结果为“十”
到这里大家就知道怎么把13变为十三了吧!
三、中文小写转阿拉伯
如下图:
上图中列举了阿拉伯数字转中文小写数字的两种思路:
公式一:
=MATCH(A2,TEXT(ROW($1:$151),"[dbnum1]"),0)
先用row函数构造一个1到151的序列号数组,然后用text把这个数组转化为中文小写的数字序列,最后用match查找目标单元格在这个序列中的位置即为该中文小写数字对应的阿拉伯数字。思路很巧妙。
当然row构造的数字序列号,上例中我用的是1:151,自己可以根据实际情况确定。
公式二:
=MAX((TEXT(ROW($1:$151),"[dbnum1]")=A2)*ROW($1:$151))
先用row函数构造一个1到151的序列号数组,然后用text把这个数组转化为中文小写的数字序列,然后通过等于目标单元格来获得一组逻辑值组成的数组,只有等于目标单元个值为true,其他均为false,然后用这组逻辑值与数字序列数组相乘,得到一个新的数组,新数组里只有true对应的数字和FALSE,最后用max找出这个数字。
四、实例
如下图:
把A列和B列的内容合并转化为下面的格式
这是一道综合练习题:
用到
文本连接符 &
自定义日期格式
文本提取
中文数字转化为阿拉伯数字
自定义数字格式
第一步:将日期转化为目标格式,提取B列文本中的中文数字
第二步:将中文数字转化为阿拉伯数字并设置为目标格式
第三步:用连接符&将各个结果连接在一起。综合起来公式如下;
="XXDD-"&TEXT(A1,"yyyy-mm-dd")&"-"&TEXT(MATCH(LEFT(B1,LEN(B1)-1),TEXT(ROW($1:$20),"[dbnum1]d"),0),"00000")
[dbnum1]d 相当于把数字当作日期中天数的序列号来处理,因为一个月最多只有31天,所以当数字大于31时这个公式的结果就会出错!
所以我们修改下公式:
="XXDD-"&TEXT(A1,"yyyy-mm-dd")&"-"&TEXT(MATCH(LEFT(B1,LEN(B1)-1),TEXT(ROW($1:$20),"[>31][dbnum1];[dbnum1]d"),0),"00000")
上面text的自定义格式这样的写法相当牛,大家注意领会。
下面是群友咫尺天涯提供的一条公式
=TEXT(A1,"!X!S!D!D!-e-mm-dd-")&TEXT(LOOKUP(1,0/(SUBSTITUTE(TEXT(ROW($1:$100),"[dbnum1]"),"一十","十")&"单"=B1),ROW($1:$100)),"00000")
后半段的处理方式使用了LOOKUP,也不难理解,我们应该学习的是前半段的处理方式。
自定义年的格式可以用
=TEXT(A1,"yyyy-mm-dd")
也可以
=TEXT(A1,"e-mm-dd")
日期前面强制性加入XSDD-,可以!X!S!D!D!- ,每个要加入的字符前面加个!
综合一下,我们可以把公式更加精炼点!
=TEXT(A1,"!X!S!D!D!-yyyy-mm-dd")&"-"&TEXT(MATCH(LEFT(B1,LEN(B1)-1),TEXT(ROW($1:$50),"[>31][dbnum1];[dbnum1]d"),0),"00000")
转自:米宏Office
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com