打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
[转载]Excel VBA中关于Format函数的用法集锦

一直想着能通过程序直接指定各种数据的类型,但一直没有实现,因为以前实现起来比较麻烦,今天上午有了一点头绪,整理如下:

通过在VBA中运行format函数与numberformat、numberformatlocal等,感觉如果涉及到日期型数据,用format函数方便些,如果涉及到比如小数点后取两位的情况用numberformatlocal属性更好些。

关于如果转换日期型数据的格式,举例如下:

Cells(1, 1).Value = "2010年5月1日"  注:先给定个样式,以便于下面进行各种验证。

⑴Cells(1, 2).Value = Format(Cells(1, 1).Value, "yyyy年mm月dd日")   注:返回2010年05月01日

⑵Cells(1, 3).Value = Format(Cells(1, 1).Value, "yyyy/mm/dd")   注:返回2010-5-1

⑶Cells(1, 4).Value = Format(Cells(1, 1).Value, "mm/dd/yyyy")  注:返回2010-5-1

⑷Cells(1, 5).Value = Format(Cells(1, 1).Value, "yyyy-mm-dd")  注:返回2010-5-1

⑸Cells(1, 6).Value = Format(Cells(1, 1).Value, "yyyy年m月d日")  注:返回2010年5月1日

以上五个语句,基本上可以概括平时遇到的问题,注意第⑵与第⑶及第⑷虽然要求的格式不一样,但最终结果是一样的,因为这是由系统所决定的。

如果涉及到数字的小数位的取舍问题,感觉用numberformatlocal属性较好些,举例如下:

一般来说如果单元格内数据,想按小数点后两位来编辑的话,应该先指定格式:

Cells(2, 1).NumberFormatLocal = "0.00_ "  注:0.00_后还有一位空格,运行发现最后一个0与右边界有间隔,不知道是什么原因!!

若改成Cells(2, 1).NumberFormatLocal = "0.00”则0后与右边界就无间隔,但都可以实现小数点后保留两位的效果。此时就属于自定义格式的问题了。

然后再填充指定值,而且不用考虑输入的数据小数点后有几位的问题,因为已经提前指定了,所以必然会按小数点后两位来取舍。

Cells(2, 1).Value = 232

若需要用逗号来分隔的话,可以用以下命令行来指定:

NumberFormatLocal = "#,##0.00_ "  注:最后一个0与右边界有间隔。若去掉空格及_则间隔消失。

实际上,先给定数据,后指定数据所在单元格的数据格式也可以实现同样效果!!已验证通过!!!

顺便再解决一下如何设置最合适的行高及列宽的问题:

一般情况下,都是对所有单元格设置最合适的行高及列宽,开始时想着就是

Cells.autofit就可以,结果发现程序不运行,细考虑才明白,Cells指的是所有单元格,而autofit应该先说明是对行还是对列设置最适合的值,所以应改为:

Cells.Columns.AutoFit  注:对所有单元格的列宽进行最合适的设置!

Cells.Rows.AutoFit  注:对所有单元格的行高进行最合适的设置!

一般设置完后,默认是对选中了所有单元格,所以最好再加一句命令Range("A1").Select,相当于取消了选中所有单元格。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
设置单元格格式之数字
[C#]对Excel的操作
Excel 单元格格式大全
TEXT 函数 (文本函数)
Excel中超好玩的Text函数,值得收藏!你玩过吗?
在Excel怎样把年月日的日期转换成年月格式?
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服