您好,欢迎来到爱问旅游网。
搜索
您的当前位置:首页【Excel教程】中文小写数字转化成阿拉伯数字

【Excel教程】中文小写数字转化成阿拉伯数字

来源:爱问旅游网


中文小写数字怎么转化成阿拉伯数字呢? 把阿拉伯数字转化成中文小写数字,我们都知道,通过单元格格式设置就可以实现,如下图:

但是上面的转化有时并不能满足我们的需求,比如,我们需要把13转化成十三,而不是一十三,这时我们该怎么办呢?

下面我们先学习下把阿拉伯数字转化成中文数字的一个函数。

一、NUMBERSTRING

功能:

EXCEL中隐藏了一个将小写数字转换成中文大写数字的函数:NUMBERSTRING,

此函数可以方便的实现小写数字到中文大写数字的转化,而且有三个参数可以选择,以展现三种不同的大写方式。此函数仅支持正整数,不支持有小数的数字。

语法:

=NUMBERSTRING(VALUE,TYPE)

value:要转化的数字

type:返回结果的类型,有三种:1,2,3

示例:

=NumberString(12345670,1) 返回结果:一十二亿三千四百五十六万七千八百九十

=NumberString(12345670,2) 返回结果:壹拾贰亿叁仟肆佰伍拾陆万柒仟捌佰玖拾

=NumberString(12345670,3) 返回结果:一二三四五六七〇

[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\")

这练习题目还是挺不错了的,一道题目用到了很多知识。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- awee.cn 版权所有 湘ICP备2023022495号-5

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务