使用Excel对象快速设置数字格式

时间:2017-08-08 16:39:28

标签: excel vba excel-vba number-formatting

我正在将一个包含46列的12,000条记录作为生产报告写入excel文件。填充数据时不显示工作表。

之前的StackOverflow信息告诉我使用对象数组将值放在速度范围内。我曾希望这也可以用于格式化值。

代码片段:

sh 'composer install'

aobj和bobj是适合范围的对象(,)数组。 bobj包含诸如" h:mma / p"之类的字符串。将时间显示为" 12:23a"和" 0.00"将数字显示为" 53/25"。

" dcel.value = aobj"需要半秒钟。 " dcel.NumberFormat = bobj"需要38秒。

对于我错过/误解的内容有任何建议吗?我宁愿一个7秒的报告(开始excel,写,保存,关闭excel)不需要45秒,因为我希望数字/日期/时间按照我的选择显示。

2 个答案:

答案 0 :(得分:0)

如果每列都有自己的格式,请尝试按整列进行格式化。同样对于每一列都不使用数组,如果格式相同,那么你可以只使用一个字符串。

每列都这样做。

请尝试并提供反馈。

答案 1 :(得分:0)

经过一些实验,我找到了与S Meaden相同的解决方案。由于46列中只有14列不是“常规”,因此我收集了日期,时间和2位小数的列号。循环遍历其中的每一个,生成12000条记录和1列的范围,设置格式。所有列都需要大约半秒钟。

奇怪的是,使用46个对象数组设置一行46个单元格所花费的时间比一列中的12000个单元格要长得多,但你确实存在。

谢谢大家。