格式化数字的主要部分,同时保持小数零件在VBA中不受欢迎



我需要格式化一个数字的主要部分(整个(,而不会触摸或影响小数部分:

12345.123456 becomes 12,345.123456
123.123 becomes 123.123
12345678.123 becomes 12,345,678.123
123 becomes 123

分数零件长度在十进制位置的长度上是可变的,需要保持不变(按原样(。

格式仅适用于整数。格式化整数很简单,但是如何不影响小数部分。

格式参数应与小数点长度的任何长度一起工作。

我正在使用以下内容:

Format(123456789.12345,"#,#.#############################")

但是,此解决方案的唯一问题是:

  1. 总有一个假设对最大可能的十进制位置数量的假设。

  2. 如果数字没有分数为" 123.0"或" 123",则输出将为" 123."。总是带有小数分离器(dot(。

谢谢

像@nicomp说你要分为两个部分。

dim num as string 'or a double converted to a string
dim nums() as string 'array
num = 123456789.123456
nums = split(num, ".") 'break into array at decimal
nums(0) = format(nums(0), "###,###") 'format whole numbers
num = nums(0) & "." & nums(1) 'recombine

这应该在每三个数字后添加一个逗号

最新更新