格式化数字的主要部分,同时保持VBA中的小数部分不变

时间:2019-07-08 11:43:23

标签: vba

我需要格式化数字的主要部分(整个),而又不影响或影响小数部分:

12345.123456 becomes 12,345.123456

123.123 becomes 123.123

12345678.123 becomes 12,345,678.123

123 becomes 123

小数部分的长度在小数点后的长度中是可变的,需要保持原样。

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

Format参数应该可以使用任意长度的小数位。

我正在使用以下内容:

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

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

  1. 总是假设最大可能的小数位数是使用的#数。

  2. 如果数字不带小数,则说“ 123.0”或“ 123”,则输出将为“ 123”。始终带有小数点分隔符(点)。

谢谢

1 个答案:

答案 0 :(得分:1)

就像@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

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