带有千位分隔符和小数的数字格式(如有必要)
Posted
技术标签:
【中文标题】带有千位分隔符和小数的数字格式(如有必要)【英文标题】:Number Format with Thousands Separator and Decimal if Necessary 【发布时间】:2016-03-15 02:59:06 【问题描述】:我正在尝试创建一种自定义格式,以便数字以逗号作为千位分隔符显示。我正在努力寻找解决方案(通过反复试验以及搜索)如果有一个小数点,但如果没有小数点数字是整数。
这是我想要实现的目标: - “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."
这些不是所需的结果,因为它不必要地显示小数。如何在需要时访问小数点,并在不需要时避免,同时使用千位分隔符?
【问题讨论】:
@KSSheon 您提到的格式规范(“#,##0.00”)即使在整数中也会显示尾随零和小数点:这不是 PO 所要求的。下面给出正确的解决方案。最好的问候, 是的,你是对的。 :) @KSSheon 没关系 :-) Rgds, 【参考方案1】:您可以使用 Excel VBA 中的自定义格式函数CustomFormat
来完成此任务,如下所示:
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
注意:由于您没有指定如何显示小于 1 的数字(例如 0.123),因此请考虑两种可能的解决方案:
CustomFormat
上面显示的 VBA 函数将显示为
.12
为了将其显示为 0.12,只需在CustomFormat
函数中将格式掩码从“#,###.##
”更改为“#,##0.##
”,其余部分保持不变。
希望这会有所帮助。
【讨论】:
不客气。祝你的项目好运。最好的问候, 我在 Excel 2010 中找不到这个,在 MSDN 上也找不到CustomFormat
的文档。你能给我指点吗?谢谢。
@cbaldan 单击 Excel 功能区菜单上的“数字”项,然后在下拉列表中导航到“自定义”(它位于最后一行)。
@AlexBell 非常感谢。匆匆看完这篇,没想到VBAFunction CustomFormat()
是在上面的sn-p代码中提出来的。
@cbaldan 欢迎您。祝你的项目好运。【参考方案2】:
您可以为具有小数的那些添加条件格式,然后将默认数字格式设置为小数点 0。
-
添加条件格式:使用
#,##0.##
,除非您希望将0.5
设置为.5
设置默认数字格式:
完成
【讨论】:
以上是关于带有千位分隔符和小数的数字格式(如有必要)的主要内容,如果未能解决你的问题,请参考以下文章
ActionScript 3 将数字格式化为字符串 - 使用小数和千位分隔符