我正在尝试创建一种自定义格式,以便数字将以逗号作为千位分隔符显示。我正在努力寻找解决方案(通过尝试和错误以及搜索)带小数点如果这个数字有一个,但是没有小数点如果数字是整数。
这是我想要实现的目标:
- “123”显示为“123”
- “1234”显示为“1,234”
- “1234.5”显示为“1,234.5”
- “1234.56”显示为“1,234.56”
- “1234.567”显示为“1,234.57”
这是我到目前为止所尝试过的,但没有成功:
Print Format(1234, "Standard") 'Displays "1,234.00"
Print Format(1234, "#,###.##") 'Displays "1,234."
这些不是期望的结果,因为它不必要地显示小数。如何在需要时访问小数点,在不需要时避免访问小数点,同时具有千位分隔符?
您可以使用自定义格式函数来完成此任务CustomFormat
在Excel VBA中如下图所示:
Sub TestFormatString()
Debug.Print CustomFormat(123)
Debug.Print CustomFormat(1234)
Debug.Print CustomFormat(1234.5)
Debug.Print CustomFormat(1234.56)
Debug.Print CustomFormat(1234.567)
End Sub
Function CustomFormat(InputValue As Double) As String
CustomFormat = Format(InputValue, "#,###.##")
If (Right(CustomFormat, 1) = ".") Then
CustomFormat = Left(CustomFormat, Len(CustomFormat) - 1)
End If
End Function
如下图所示的结果符合您的要求:
123
1,234
1,234.5
1,234.56
1,234.57
Note:由于您没有指定如何显示小于 1 的数字(例如 0.123),那么请考虑两种可能的解决方案:
-
CustomFormat
上面显示的 VBA 函数将其显示为
.12
- 为了将其显示为 0.12,只需将格式掩码从“更改为
#,###.##
" to "#,##0.##
" in CustomFormat
功能齐全,其余保持完好。
希望这会有所帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)