Excel VBA之函数篇-3.2-数字中文大小写,财务人事的福音

Excel VBA之函数篇-3.2-数字中文大小写,财务人事的福音

前景提要

今天下班的时候,碰巧看到财务还在加班,是个萌妹子,本着绅士风度,友好的问了一下为什么下班了还在加班,印象中财务应该是非常轻松的工作才对的,没想到妹子哭丧着脸说自己还在核算财务数据,一大堆的数字要转换成中文写法,但是他从来没接触过,正在一个个百度然后复制粘贴呢?这样的场景相信很多的财务人事肯定是经常碰到的,那么今天我就顺手分享下如何将数字转化为中文大小写的吧,希望更多的财务方面的朋友,能够摆脱中文数字大小写的困扰。

不过既然我们是放在函数篇,那也就是说明我们可以函数来实现这样的功能咯。没错没错,VBA的函数还是很强大的,有现成的函数来帮我们实现,这样我们的操作就更加的简单了,当然如果你深入学习的话,你就会说另外一句话“没有函数?没关系,我自己写个函数!”

函数说明

好了,不扯远了,隆重介绍下今天的这个函数TEXT()函数,看见这个函数,大家首先想到的这个应该是一个文本类的函数,没错,你数字转化成为了中文,不就是文本了嘛,当然和文本来的操作有一定的关系了,TEXT()就是将括号内的内容转化成为文本类的函数,它的标准格式是这样的:TEXT(value,format_value),有两个参数,第一个参数是代表内容,就是你要转化的内容,第二参数就是将要转化的内容的格式,比较常用的格式有如下几种:

"0",代表整数模式

"yyyy年mm月dd日",代表日期格式

"0.00",整数后面保留2个小数点

等。写到这里,大家肯定不淡定了常用格式里面居然没有说明如何转话成为数字中文大小写的!这还算是什么常用格式!

其实并不是这样的(小编一脸委屈),因为数字中文大小写他是搭配一个固定的参数来实现的,就是[DBNum1}和[DBNum2},1代表的是中文小写,2代表的是中文大写。好了,我们还是用实例说话吧。

上代码

Sub test()Dim rng As RangeFor Each rng In Selection rng.Offset(0, 1) = WorksheetFunction.Text(rng.Text, "[DBNum1]") rng.Offset(0, 2) = WorksheetFunction.Text(rng.Text, "[DBNum2]")Next rngEnd Sub

效果如图:

我们假设有一列数据是我们需要转化成为数字中文大小写的,如下图,数字有大有小,有长有短

通过代码,我们需要实现了两种不同的效果,一种是数字的中文小写,一种是数字的中文大写,两种效果通过代码同时实现,这样可以更好的对应着理解代码的意思和写法的不同。最终实现的效果如下:

怎么样,效果不错吧。

代码解析

今天的代码也不算是很长,依然是非常的简短,函数是VBA本身就已经存在的,我们并不需要再去构造,只需要知道有这样的一个函数,并且在需要的时候能够拿出来使用就好。为了演示的方便,我们这里假定这些数字已经被提前选中了,selection就是代表被选中的单元格区域。

然后我们通过for each 循环来遍历这个被选中的区域的每个单元格,单元格右边第一个单元格转化成为中文小写,右边第二个单元格转化成为中文大写。这里单元格的移动主要是通过offset()来实现的,和excel中的意思是差不多的,我们后面会具体讲述下offset的用法,这里我们先大致知道下就好,offset(a,b)有两个参数,代表移动多少行多少列,右边为正反向,左边为反方向。之后就是我们今天的重头戏了,text()函数的运用。

rng.Offset(0, 1) = WorksheetFunction.Text(rng.Text, "[DBNum1]")rng.Offset(0, 2) = WorksheetFunction.Text(rng.Text, "[DBNum2]")

第一行中的[DBNum1]代表了将单元格的内容转化成为中文数字小写的样子,而第二行中的[DBNum2]则代表了中文大写的意思。

是不是非常的简单呢。

完整代码加注释

Sub test()Dim rng As RangeFor Each rng In Selection '遍历选中区域的每个单元格 rng.Offset(0, 1) = WorksheetFunction.Text(rng.Text, "[DBNum1]") '将单元格内容转化成为中文小写 rng.Offset(0, 2) = WorksheetFunction.Text(rng.Text, "[DBNum2]") '将单元格内容转化成为中文大写Next rngEnd Sub

总结

============================================

今天分享就介绍到这里了,是不是非常的简短呢?其实小编也想多写一点的,但是。。。函数就是这样的强大,你想要实现一些功能,可能通过函数简单的几个转换就可以达到目的了,并不需要太多的废话。其实某种程度上来说,我们今天的场景是非常的简单的,可能碰到一些更加复杂的场景的时候,就不是简单的text()就可以解决了,他可能需要嵌套其他的函数或者知识一起解决,比方说我们再加个日期格式的数字,通过该方法就没有办法直接达到效果了,可以通过提取数字出来转换之后在合并的方法,也可以通过数组的方法,这些我们后面再讲,大家先掌握今天的这个方法,至少财务童鞋可以按时下班了,哈哈

============================================

本人已经打算长期分享一些网络搜集的各种VBA知识,如果大家有问题也可以提出来共同解决,一起进步,毕竟VBA的世界还是很大的。

(0)

相关推荐