text+match将中文小写数字转为阿拉伯数字

小伙伴们,大家过年好。今天要分享的内容是阿拉伯数字(例如1,2,3等)与中文小写数字(一,二,三)的互转,当然不是所有的数字都能互转,肯定是有一个范围的,我这里的范围是1到100之间的数字。如果你想转换更多的数字,可以看完我的文章再研究下。

1.将阿拉伯数字转为中文小写数字

如下图所示,将A列的阿拉伯数字转为B列的中文小写数字。对于这个问题,我们需要用到text的特殊格式代码[dbnum1],它是将数字转为中文小写数字(○、一~十)。如果你对这个代码不熟悉,可以看之前的文章《自定义数字格式7——中文大小写数字》。在B2单元格输入公式=SUBSTITUTE(TEXT(A2,"[dbnum1]"),"一十","十"),向下填充,完成。 

=TEXT(A2,"[dbnum1]")这部分就是用text将数字转为中文小写数字,结果如下图B列所示。大部分都是准确的,但10-19之间返回的结果前面多了个一,不符合我们的习惯。所以下一步要想办法把多余的一给去掉。

我这里用的办法就是把"一十"替换为"十",所以用的函数是substitute,公式为=SUBSTITUTE(TEXT(A2,"[dbnum1]"),"一十","十")。这种转换还是挺简单的。

2.将中文小写数字转为阿拉伯数字

那有没有办法将中文小写数字转为阿拉伯数字呢?就像下图那样。你可以先自己想一下。答案肯定是有的。方法其实也挺简单的,就是在A列的中文数字区域中查找每个中文数字的位置,比如一,那就查找一在A2:A101的位置,结果返回1;二在A2:A101中的位置是2。


而A2:A101这个区域的内容我们又可以用第1个题目的方法,通过内存数组来构造。=SUBSTITUTE(TEXT(ROW($1:$100),"[dbnum1]"),"一十","十")这部分构成一个内存数组,返回的结果就是中文小写数字的一到一百。其实就是第1个题目的公式,只不过把一个数字改为一个数组。

接下来就可以用match来查找中文小写数字在这个内存数组中的位置,在C2单元格输入公式=MATCH(A2,SUBSTITUTE(TEXT(ROW($1:$100),"[dbnum1]"),"一十","十"),),按ctrl+shift+enter三键结束,向下填充,结果如下图所示。

上面的那个公式是为了大家好理解,还可以用另外的公式,在B2单元格输入公式=MATCH("*"&A2,TEXT(ROW($1:$100),"[dbnum1]"),),同样按三键结束,向下填充,结果如下图B列所示。这里match用的是通配符的用法,算是取巧了。

如果你有其他的方法,欢迎在留言区写出你的答案,让我们一起学习。

文件链接:

https://pan.baidu.com/s/1YuXVebKcHA8AUI3z000e-g

提取码:l8vo

(0)

相关推荐