VBA分享专栏

Excel VBA之函数篇-3.2-财务人士专场 数字与中文的转

2021-01-13  本文已影响0人  Excel和VBA

前景提要

今天碰到看到公司财务正在加班,对此深表无奈,每个月的今天财务都是最后离开公司的人,因为要上交各种数据,数据还不是最困难的,因为中国人的习惯,财务数据还要转换成为中文的大小写来进行登记,对于我这个财务白痴来说,别说是写了,让我看都不认识,我们公司的财务也是如此,还特意自己做了一个对照表来一个一个的手打

那么今天我就顺手分享下如何将数字转化为中文大小写的吧,希望更多的财务方面的朋友,能够摆脱中文数字大小写的困扰。

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

函数说明

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

"0",代表整数模式

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

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

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

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

上代码

Sub test()

Dim rng As Range

For Each rng In Selection

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

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

Next rng

End Sub

效果如图:

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


image.png

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

image.png

怎么样,效果不错吧。

代码解析

今天的代码也不算是很长,依然是非常的简短,函数是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 Range

For Each rng In Selection '遍历选中区域的每个单元格

    rng.Offset(0, 1) = WorksheetFunction.Text(rng.Text, "[DBNum1]") '将单元格内容转化成为中文小写

    rng.Offset(0, 2) = WorksheetFunction.Text(rng.Text, "[DBNum2]") '将单元格内容转化成为中文大写

Next rng

End Sub

上一篇下一篇

猜你喜欢

热点阅读