《VBA经典应用69例》(版权10178981),是我推出的第九套教程,教程是专门针对初级、中级学员在学习VBA过程中可能遇到的案例展开,这套教程案例众多,紧贴“实战”,并做“战术总结”,以便大家能很好的应用。教程的目的是要求大家在实际工作中要利用好VBA。本套教程共三册六十九个专题,今日内容:VBA经典应用69例应用6:利用VBA进行格式化的设置
【分享成果,随喜正能量】心无挂碍,尽情享受当下便好。世事浮云何足问,不如高卧且加餐。生活中一切事,放平心态,不纠结、不执着,从容潇洒的走过,也是一种难得的人生智慧。
应用6 工作表中数值的格式化(NumberFormat)处理
这个专题的应用也是来源于给学员的答疑,格式(Format)是我们在处理工作表数据时必须要面对的问题,处理的好可以让整个工作表看起来赏心悦目,处理的不好,会给人以凌乱的感觉。我们这讲的内容将总结一下在工作表中如何格式化数据,处理方案仍是结合我们日常工作中的EXCEL操作来进行。
NumberFormat是Excel Range对象的属性。Range对象可以被视为一个单元格或一组单元格,可以是单个单元格、或者是一列或是工作表的UsedRange。NumberFormat属性可用于设置时间、日期、货币/会计格式和许多其他格式的格式。通过这种格式的设置,可以让信息以最佳方式传递给阅读者。例如,我们可以在长数字中加入一些逗号,可以在把小数点长的数字向上(或向下)舍入到最接近的2或3个小数点等等。此外,NumberFormat还可以用来设置一个自定义格式。
4 利用VBA进行格式化的设置
在这节中,我们讲解利用VBA进行格式化设置,我仍是通过实例应用给大家讲解。
实例一:VBA基本的单元格格式设置
在这个实例中我们利用VBA完成单元格的数字格式属性设置。在此示例中,我们希望将单元格C2的十进制小数点位数设置为2,单元格C3添加逗号,使其更具可读性。C1和C2单元格的值都等于响应A列单元格的值。原始数据如下截图:
为了完成上面的格式要求,代码如下:
Sub mynzA()
Sheets("SHEET3").Select
Range("B2") = "保留两位小数"
Range("C2").Value = Range("A2").Value
Range("C2").NumberFormat = "#.##"
Range("B3") = "数值添加逗号"
Range("C3").Value = Range("A3").Value
Range("C3").NumberFormat = "#,#"
End Sub
代码截图:
代码的讲解:(略)
代码的运行结果:
实例二:单元格格式设置的处理
这个实例中,我们仍然对C列的单元格进行设置,值的来源仍是A列的数据。C4中添加逗号,以便于读取。C5单元格,我们希望删除右边的六位数字,并改为"M",我们不希望有任何小数点。
我们先看一下原始数据:
代码如下:
Sub mynzB()
Sheets("SHEET3").Select
Range("B4") = "添加逗号,两位小数"
Range("C4").Value = Range("A4").Value
Range("C4").NumberFormat = "#,##0.##"
Range("B5") = "数值保留*M形式"
Range("C5").Value = Range("A5").Value
Range("C5").NumberFormat = "#,##0,, ""M"""
End Sub
代码截图:
代码的讲解:"#,##0,, ""M""",如果此设置中两个相连的逗号与两个相连的引号间不加空格, 那么在最后显示的运行结果中“1”和“M”间同样也将不存在空格。
代码的运行结果:
实例三:条件格式设置
这个实例是一种条件格式的设置,有时,如果数字为负可能需要将字体变红。当单元格值为零时,要显示特定字符串(字符集)。此时我们可以利用下面的语法达到我们的目的:
[display of positive values];[display of negative values];[display of zero values]; [display of text values]
这个语法共四部分,分别完成正值、负值、零及文本的格式设置,在这些方括号中,我们可以完成格式设置代码。
如下面截图的数据:
我们要完成的设置为:让数以红色区分;小数点位数为两位;添加逗号;将零替换为"-"。下面看我给出的格式设置代码:
Sub mynzC()
Sheets("SHEET3").Select
Range("B6:B11") = "条件格式设置"
Range("C6:C11").Value = Range("A6:A11").Value
Range("C6:C11").NumberFormat = "#,0.00;[red]-#,0.00;""-"""
End Sub
代码的截图:
代码的讲解:让我们分解格式代码:"#,0.00;[red]-#,0.00;""-""" 其中有两个分号,这意味着首先是正值代码,然后是负值代码,然后是零值代码。
1)正值的设置代码,代码部分如下截图:
① ".00"确保我们有两个小数位。
② "0.00"确保小数的左侧至少有一位数字,如果没有,则将放置一个零位。
③ "#,0"确保在适用的情况下添加逗号。请注意,我们使用的是井号标签符号而不是零号,因为如果我们小数的左侧只有一位数字,那么我们就不想在左侧添加零。
2)负值的设置代码,代码部分如下截图:
其中[red]是为了设置负值为红色。其余类似正值的设置。
3)剩余的部分为零值的设置,将零值替换为“-”。这里是双层的引号,必须编写外部双引号,因为代码是字符串(字符)。“-”自然需要用双引号括起来。但是为了向VBA表明我们需要这些双引号(这意味着我们不仅仅是以函数的方式使用它们,而是实际上希望它们成为字符串的一部分),我们用另一对双引号将它们包围起来。
最后我们看看代码的运行输出效果:
总结:Excel中数字格式属性可通过Excel界面或VBA来实现。本讲的格式化代码我列举了大量的示例进行解释,以便读者能理解格式化的操作。另外,数字格式属性中还有条件格式,可用于为特定条件设置指定格式。同时格式化时可以将文本与数字相结合。
今日内容回向:
1 VBA如何设置单元格的格式?
2 单元格条件格式的语法是怎样的,如何利用条件格式设置单元格?
本讲内容参考程序文件:应用006.xlsm
我20多年的VBA实践经验,全部浓缩在下面的各个教程中: